(** * Some alternative (but equivalent) presentations for an Ordered Type
   inferface. *)

(** ** The original interface *)

Module Type OrderedTypeOrig := OrderedType.OrderedType.(* Provides : t eq eq_equiv eq_dec *)

 Definition lt := O.lt.#[global]
 Instance lt_strorder : StrictOrder lt.#[global]
 Instance lt_compat : Proper (eq==>eq==>iff) lt.Definition compare x y :=
   match O.compare x y with
    | EQ _ => Eq
    | LT _ => Lt
    | GT _ => Gt
  end.

(* Specifications: *)
Lemma compare_spec : forall x y, CompSpec eq lt x y (compare x y).