(* 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.

Lemma relation_conjunction_inclusion: forall {A} (R1 R2 R3 R4: relation A),
inclusion _ R1 R2 ->
inclusion _ R3 R4 ->
inclusion _ (relation_conjunction R1 R3) (relation_conjunction R2 R4).