let rec collect_imply ps = function
  | Fol.Pimplies(a,b) -> collect_and (collect_imply ps b) a
  | p -> p :: ps