let p_iff p1 p2 =
    match val_of p1,val_of p2 with
      | Ptrue ,_ -> p2
      | _ ,Ptrue -> p1
      | Pfalse, _ -> p_not p2
      | _ , Pfalse -> p_not p1
      | _ -> Piff (p1,p2)