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