(* Proof of lem_rel_inter_rel_sig                                          *)
unfold rel_sig in |- *; unfold inc in |- *; unfold rel_inter in |- *; intros.
elim (lem_inter_propertie r1 r2 v0); intros; generalize (H0 H); clear H H0 H1;
intros; elim H; clear H; intros.
elim (lem_cartesian_propertie (inter a1 a2) (inter b1 b2) v0); intros;
apply H2; clear H1 H2; intros.
generalize (rRel1 v0 H) (rRel2 v0 H0); clear rRel1 rRel2 H H0; intros.
elim (lem_cartesian_propertie a1 b1 v0); intros; generalize (H1 H);
clear H H1 H2; intros; elim H; clear H; intros; elim H;
clear H; intros; elim H; clear H; intros; elim H1;
clear H1; intros.
elim (lem_cartesian_propertie a2 b2 v0); intros; generalize (H3 H0);
clear H0 H3 H4; intros; elim H0; clear H0; intros;
elim H0; clear H0; intros; elim H0; clear H0; intros;
elim H3; clear H3; intros.
generalize H4; rewrite H2; clear H2 H4; intros.
elim (lem_couple_propertie x x1 x0 x2); intros; generalize (H2 H4);
clear H2 H4 H5; intros; elim H2; clear H2; intros;
generalize H0 H3; rewrite <- H2; rewrite <- H4; clear H0 H3 H2 H4;
clear x1 x2; intros.
exists x; exists x0; split;
[ elim (lem_inter_propertie a1 a2 x); intros; apply H4; split;
auto with zfc
| split;
[ elim (lem_inter_propertie b1 b2 x0); intros; apply H4; split;
auto with zfc
| reflexivity ] ].
Qed.
(* End of proof of lem_rel_inter_rel_sig                                   *)

(* Specifications: *)
(***************************************************************************)
(* Le domaine de l'intersection de deux relations est inclus dans          *)
(* l'intersection des deux domaines.                                       *)
(***************************************************************************)
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)).