(* Note: usually "Ident.lt x (another_var x)", but not always; if you are writing an algorithm, make sure by doing the comparison! *)
(* Note that there are NO AXIOMS about the following operators! *)
Parameter Z2id: Z -> Ident.t.
Parameter add_id: Ident.t -> Ident.t -> Ident.t.
Parameter mult_id: Ident.t -> Ident.t -> Ident.t.
(* (* (* Version 2:  This version is what SHOULD be usable if if you want to "Compute" in Coq, but it suffers from bug #2608 in Coq 8.3pl2.   Until this is fixed, use version 3. *)
Module Ident <: UsualOrderedType := Positive_as_OT.
Parameter minid: Ident.t.
Parameter id2pos: Ident.t -> positive.

(* Specifications: *)
Axiom minid_eq: id2pos minid = 1%positive.
Axiom Ilt_morphism: forall x y, Ident.lt x y -> Plt (id2pos x) (id2pos y).
Parameter another_id: Ident.t -> Ident.t.