Definition for_all (m: T.t A) (f: T.elt -> A -> bool) : bool :=
  T.fold (fun b x a => b && f x a) m true.

(* Specifications: *)
Lemma for_all_correct: forall m f, for_all m f = true <-> (forall x a, T.get x m = Some a -> f x a = true).
Lemma for_all_correct: forall m f, for_all m f = true <-> (forall x a, T.get x m = Some a -> f x a = true).