let forall f m = try M.fold (fun x e p -> let q = f x e in if F.is_false q then raise Trivial ; F.p_and p q ) m F.p_true with Trivial -> F.p_false