Section ListOfDomDef.
Variable A : Type.
Definition ad_list_of_dom :=
MapFold A (list ad) nil (app (A:=ad)) (fun (a:ad) (_:A) => a :: nil).

(* Specifications: *)
Lemma ad_in_list_of_dom_in_dom :
forall (m:Map A) (a:ad), ad_in_list a (ad_list_of_dom m) = in_dom A a m.
Lemma Elems_of_list_of_dom :
forall m:Map A, eqmap unit (Elems (ad_list_of_dom m)) (MapDom A m).
Lemma Elems_of_list_of_dom_c :
forall m:Map A, mapcanon A m -> Elems (ad_list_of_dom m) = MapDom A m.
Lemma ad_list_of_dom_card_1 :
forall (m:Map A) (pf:ad -> ad),
length
(MapFold1 A (list ad) nil (app (A:=ad)) (fun (a:ad) (_:A) => a :: nil)
pf m) = MapCard A m.
Lemma ad_list_of_dom_card :
forall m:Map A, length (ad_list_of_dom m) = MapCard A m.
Lemma ad_list_of_dom_not_stutters :
forall m:Map A, ad_list_stutters (ad_list_of_dom m) = false.