(* End of proof of lem_rel_union_prop                                      *)

(***************************************************************************)
(* Intersection de deux relations                                          *)
(***************************************************************************)
Definition rel_inter (r1 a1 b1 r2 a2 b2 : E) (rRel1 : rel_sig r1 a1 b1)
  (rRel2 : rel_sig r2 a2 b2) := inter r1 r2.

(* Specifications: *)
Lemma lem_rel_inter_rel_sig : forall (r1 a1 b1 r2 a2 b2 : E) (rRel1 : rel_sig r1 a1 b1) (rRel2 : rel_sig r2 a2 b2), rel_sig (rel_inter r1 a1 b1 r2 a2 b2 rRel1 rRel2) (inter a1 a2) (inter b1 b2).
Lemma lem_rel_inter_dom : forall (r1 a1 b1 r2 a2 b2 : E) (rRel1 : rel_sig r1 a1 b1) (rRel2 : rel_sig r2 a2 b2), inc (rdom (rel_inter r1 a1 b1 r2 a2 b2 rRel1 rRel2) (inter a1 a2) (inter b1 b2) (lem_rel_inter_rel_sig r1 a1 b1 r2 a2 b2 rRel1 rRel2)) (inter (rdom r1 a1 b1 rRel1) (rdom r2 a2 b2 rRel2)).
Lemma lem_rel_inter_Img : forall (r1 a1 b1 r2 a2 b2 : E) (rRel1 : rel_sig r1 a1 b1) (rRel2 : rel_sig r2 a2 b2), inc (rImg (rel_inter r1 a1 b1 r2 a2 b2 rRel1 rRel2) (inter a1 a2) (inter b1 b2) (lem_rel_inter_rel_sig r1 a1 b1 r2 a2 b2 rRel1 rRel2)) (inter (rImg r1 a1 b1 rRel1) (rImg r2 a2 b2 rRel2)).
Lemma lem_rel_inter_prop : forall (r1 a1 b1 r2 a2 b2 : E) (rRel1 : rel_sig r1 a1 b1) (rRel2 : rel_sig r2 a2 b2) (c : E), In c (rel_inter r1 a1 b1 r2 a2 b2 rRel1 rRel2) <-> In c r1 /\ In c r2.