Definition respectful_relation {A B} (f: A -> B) (R: relation B): relation A := fun x y => R (f x) (f y).Definition fst_relation {A B}: relation A -> relation (A * B) := respectful_relation (@fst A B).Definition snd_relation {A B}: relation B -> relation (A * B) := respectful_relation (@snd A B).Instance respectful_relation_proper {A B} (f: A -> B): Proper (same_relation _ ==> same_relation _) (respectful_relation f).

(* Specifications: *)
Lemma respectful_compond_relation: forall {A B} (f: A -> B) R1 R2, inclusion _ (compond_relation (respectful_relation f R1) (respectful_relation f R2)) (respectful_relation f (compond_relation R1 R2)).