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

Lemma compond_relation_spec: forall {A} (R1 R2: relation A) x z,
compond_relation R1 R2 x z ->
exists y, R1 x y /\ R2 y z.