(* Copied from RamifyCoq project *)
Require Export Coq.Relations.Relations.
Require Export Coq.Classes.Equivalence.
Require Coq.Setoids.Setoid.
Definition full_relation {A} : relation A := fun _ _ => True.
Instance same_relation_Equivalence {A}: Equivalence (same_relation A).
Instance inclusion_proper {A}: Proper (same_relation A ==> same_relation A ==> iff) (inclusion A).
Inductive compond_relation {A: Type} (R1 R2: relation A) : relation A :=
| compond_intro: forall x y z, R1 x y -> R2 y z -> compond_relation R1 R2 x z.
Instance compond_relation_proper {A: Type}: Proper (same_relation A ==> same_relation A ==> same_relation A) compond_relation.
Instance relation_conjunction_proper {A: Type}: Proper (same_relation A ==> same_relation A ==> same_relation A) relation_conjunction.

Lemma relation_disjunction_iff: forall {A} (R R': relation A) x y,
relation_disjunction R R' x y <-> R x y \/ R' x y.