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