Require OrderedType.
(** Some preliminary results  **)
Instance not_symmetric (A : Type) (R: relation A) `{Symmetric A R} : Symmetric (fun x y => ~R x y).
Definition full_relation {A : Type} : relation A := fun x y : A => True.
(** Conversion module between the two kinds of [OrderedType]. **)
Module OTconvert (O : OrderedType) : OrderedType.OrderedType
with Definition t := O.t
with Definition eq := O.eq
with Definition lt := O.lt.
Definition t := O.t.
Definition eq := O.eq.
Definition lt := O.lt.
Definition eq_refl : forall x, eq x x := reflexivity.

(* Specifications: *)
Lemma eq_sym : forall x y : t, eq x y -> eq y x.
Definition eq_dec := O.eq_dec.