Section ForNotations.
Notation In:=(InA eq).
Notation Inf:=(lelistA lt).
Notation Sort:=(sort lt).
Notation NoDup:=(NoDupA eq).
(* ltk ignore the second components *)
Hint Resolve eqk_trans eqke_trans eqk_refl eqke_refl : core.
Hint Resolve ltk_trans ltk_not_eqk ltk_not_eqke : core.
Hint Immediate eqk_sym eqke_sym : core.
Global Instance eqk_equiv : Equivalence eqk.
Global Instance ltk_compat' : Proper (eqke==>eqke==>iff) ltk.
(* Additional facts *)
Hint Resolve eqk_not_ltk : core.
Hint Immediate ltk_eqk eqk_ltk : core.
Hint Resolve InA_eqke_eqk : core.
Definition MapsTo (k:key)(e:elt):= InA eqke (k,e).
Definition In k m := exists e:elt, MapsTo k e m.
Notation Sort := (sort ltk).
Notation Inf := (lelistA ltk).
Hint Unfold MapsTo In : core.
(* An alternative formulation for [In k l] is [exists e, InA eqk (k,e) l] *)

Lemma Sort_In_cons_2 : forall l e e', Sort (e::l) -> InA eqk e' (e::l) ->
ltk e e' \/ eqk e e'.