Module L := FMapList.Raw E.
(** Not exactly pretty nor perfect, but should suffice as a first naive implem. Anyway, map2 isn't in Ocaml... *)
Definition anti_elements (A:Type)(l:list (key*A)) := L.fold (@add _) l (empty _).
Definition map2 (A B C:Type)(f:option A->option B -> option C)(m:t A)(m':t B) : t C :=
anti_elements (L.map2 f (elements m) (elements m')).
(** same trick for [equal] *)
Definition equal (A:Type)(cmp:A -> A -> bool)(m m' : t A) : bool :=
L.equal cmp (elements m) (elements m').

Lemma equal_2 :
forall (A:Type)(m: t A)(m': t A)(cmp: A -> A -> bool),
equal cmp m m' = true -> Equivb cmp m m'.