let pif = function
  | (c,Fol.Ptrue,p ) -> Fol.por ((bool_term_to_predicate c),p)
  | (c,p, Fol.Ptrue ) -> Fol.por (pnot (bool_term_to_predicate c),p)
  | (c,Fol.Pfalse,p ) -> Fol.pand (pnot (bool_term_to_predicate c),p)
  | (c,p, Fol.Pfalse ) -> Fol.pand (bool_term_to_predicate c,p)
  | (t,p1,p2) -> Fol.pif (t,p1,p2)