(* provides eqk, eqke *)

 Local Notation key:=O.t.Definition ltk {elt} : relation (key*elt) := O.lt @@1.(* ltk is a strict order *)

#[global]
 Instance ltk_strorder {elt} : StrictOrder (@ltk elt) := _.#[global]
 Instance ltk_compat {elt} : Proper (eqk==>eqk==>iff) (@ltk elt).#[global]
 Instance ltk_compat' {elt} : Proper (eqke==>eqke==>iff) (@ltk elt).(* Additional facts *)

#[global]
 Instance pair_compat {elt} : Proper (O.eq==>Logic.eq==>eqke) (@pair key elt).Implicit Type p q : key*elt.Implicit Type l m : list (key*elt).

(* Specifications: *)
Lemma ltk_not_eqk p q : ltk p q -> ~ eqk p q.
Lemma ltk_not_eqke p q : ltk p q -> ~eqke p q.