Variable  m m' m'' : t A.
Variable x y z : key.
Variable e e' : A.

(* Specifications: *)
Lemma MapsTo_1 : E.eq x y -> MapsTo x e m -> MapsTo y e m.
Lemma is_empty_1 : Empty m -> is_empty m = true.
Lemma is_empty_2 : is_empty m = true -> Empty m.
Lemma mem_1 : In x m -> mem x m = true.
Lemma mem_2 : forall m x, mem x m = true -> In x m.
Lemma add_1 : E.eq x y -> MapsTo y e (add x e m).
Lemma add_2 : ~ E.eq x y -> MapsTo y e m -> MapsTo y e (add x e' m).
Lemma add_3 : ~ E.eq x y -> MapsTo y e (add x e' m) -> MapsTo y e m.
Lemma remove_1 : E.eq x y -> ~ In y (remove x m).
Lemma remove_2 : ~ E.eq x y -> MapsTo y e m -> MapsTo y e (remove x m).
Lemma remove_3 : MapsTo y e (remove x m) -> MapsTo y e m.
Lemma alist_sorted_sort : forall l, alist_sorted A l=true -> sort lt_key l.
Lemma elements_3 : sort lt_key (elements m).
Lemma elements_3w : NoDupA eq_key (elements m).
Lemma elements_1 :
MapsTo x e m -> InA eq_key_elt (x,e) (elements m).
Lemma elements_2 :
InA eq_key_elt (x,e) (elements m) -> MapsTo x e m.
Lemma cardinal_1 : forall m, cardinal m = length (elements m).
Lemma mapi_1 : forall (elt elt':Type)(m: t elt)(x:key)(e:elt)
(f:key->elt->elt'), MapsTo x e m ->
exists y, E.eq y x /\ MapsTo x (f y e) (mapi f m).
Lemma mapi_aux_2 : forall (elt elt':Type)(m: t elt)(pf:N->N)(x:key)
(f:key->elt->elt'), In x (mapi_aux pf f m) -> In x m.
Lemma mapi_2 : forall (elt elt':Type)(m: t elt)(x:key)
(f:key->elt->elt'), In x (mapi f m) -> In x m.
Lemma map_1 : forall (elt elt':Type)(m: t elt)(x:key)(e:elt)(f:elt->elt'),
MapsTo x e m -> MapsTo x (f e) (map f m).
Lemma map_2 : forall (elt elt':Type)(m: t elt)(x:key)(f:elt->elt'),
In x (map f m) -> In x m.