Section Elt.
Variable elt : Type.
Notation key:=t.
Definition eqk (p p':key*elt) := eq (fst p) (fst p').
Definition eqke (p p':key*elt) :=
eq (fst p) (fst p') /\ (snd p) = (snd p').
Hint Unfold eqk eqke : core.
Hint Extern 2 (eqke ?a ?b) => split : core.
(* eqke is stricter than eqk *)
(* eqk, eqke are equalities *)

Lemma eqk_refl : forall e, eqk e e.