Module Ident : UsualOrderedType.
Parameter t: Type.
Definition eq := @Logic.eq t.
Definition eq_equiv := @eq_equivalence t.
Parameter lt : t -> t -> Prop.
Parameter lt_strorder : StrictOrder lt.
Parameter lt_compat : Proper (eq==>eq==>iff) lt.
Parameter compare : forall x y : t, comparison.
Parameter eq_dec : forall x y : t, {eq x y} + {~ eq x y}.
End Ident.
(* Version 1: Use this version if you want proper abstraction *)
Parameter minid : Ident.t.
Parameter id2pos: Ident.t -> positive.
Parameter pos2id: positive -> Ident.t.

Axiom pos2id_inj: forall x y, pos2id x = pos2id y -> x = y.
Axiom minid_eq: id2pos minid = 1%positive.
Axiom Ilt_morphism: forall x y, Ident.lt x y -> Plt (id2pos x) (id2pos y).