Definition ad_inj (pf:ad -> ad) :=
forall a0 a1:ad, pf a0 = pf a1 -> a0 = a1.

(* Specifications: *)
Lemma ad_comp_double_inj :
forall pf:ad -> ad, ad_inj pf -> ad_inj (fun a0:ad => pf (Ndouble a0)).
Lemma ad_comp_double_plus_un_inj :
forall pf:ad -> ad,
ad_inj pf -> ad_inj (fun a0:ad => pf (Ndouble_plus_one a0)).
Lemma alist_of_Map_semantics_1 :
forall (m:Map A) (pf:ad -> ad),
ad_inj pf ->
forall a:ad,
MapGet A m a =
alist_semantics
(MapFold1 alist anil aapp (fun (a0:ad) (y:A) => acons (a0, y) anil)
pf m) (pf a).
Lemma alist_of_Map_semantics :
forall m:Map A, eqm A (MapGet A m) (alist_semantics (alist_of_Map m)).