End my_MapFold.
(* Next we show the assumptions in the previous section are satisfied if M is a set of maps, neutral is the empty map, op is MapMerge and R is eqmap *)

Lemma my_alist_of_map_lemma_2 :
forall (A : Set) (m : Map A) (pf fp : ad -> ad),
(forall a : ad, fp (pf a) = a) ->
forall (a : ad) (y : A),
In (a, y)
(MapFold1 _ _ (anil _) (aapp _)
(fun (a : ad) (y : A) => acons _ (a, y) (anil _)) pf m) ->
MapGet _ m (fp a) = Some y /\ pf (fp a) = a.