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