Definition F (A : Set) (f : ad -> A -> M) (r : ad * A) 
  (m : M) := let (a, y) := r in op (f a y) m.

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.