End RelationDef.
Arguments union {A} R1 R2 x y /.
Arguments intersection {A} R1 R2 x y /.
Module StrictTotalOrderViaEquiv.
Section StrictTotalOrderViaEquiv.
Variable A: Type.
Variables R eqA: relation A.
Variable Order: StrictTotalOrderViaEquiv R eqA.

(* Specifications: *)
Lemma disjointed_3cases: forall x y,
(R x y /\ ~ eqA x y /\ ~ R y x) \/
(~ R x y /\ eqA x y /\ ~ R y x) \/
(~ R x y /\ ~ eqA x y /\ R y x).
Lemma LeftProperViaEquiv: forall x x0 y, eqA x x0 -> R x y -> R x0 y.
Lemma RightProperViaEquiv: forall x y y0, eqA y0 y -> R x y -> R x y0.
Instance ProperViaEquiv: Proper (eqA ==> eqA ==> iff) R.