Section Elt2.
(* A new section is necessary for previous definitions to work with different [elt], especially [MapsTo]... *)
Variable elt elt' : Type.
(** Specification of [map] *)
(** Specification of [mapi] *)

Lemma mapi_1 : forall (m:t elt)(x:key)(e:elt)(f:key->elt->elt'),
MapsTo x e m ->
exists y, X.eq y x /\ MapsTo x (f y e) (mapi f m).