Definition f_OK (A B : Set) (f : ad -> A -> Map B) :=
  forall (a a1 a2 : ad) (y1 y2 : A),
  in_dom _ a (f a1 y1) = true -> in_dom _ a (f a2 y2) = true -> a1 = a2.Definition no_dup_alist (A : Set) (l : alist A) :=
  forall (a : ad) (y1 y2 : A), In (a, y1) l -> In (a, y2) l -> y1 = y2.

Lemma myMapFold_lemma : forall (A B : Set) (f : ad -> A -> Map B) (m : Map A), f_OK _ _ f -> forall (a : ad) (y : B), MapGet _ (MapFold _ _ (M0 _) (MapMerge _) f m) a = Some y <-> (exists a1 : ad, (exists y1 : A, MapGet _ m a1 = Some y1 /\ MapGet _ (f a1 y1) a = Some y)).