(* Proof of lem_equivClass_eq                                              *)
intros; unfold equivClass in |- *; apply axs_extensionnalite;
unfold iff in |- *; split; intros.
elim (axs_comprehension (fun y : E => In (couple x y) r) a v2); intros;
generalize (H1 H0); clear H0 H1 H2; intros.
elim H0; clear H0; intros.
elim (axs_comprehension (fun y0 : E => In (couple y y0) r) a v2); intros;
apply H3; clear H2 H3; intros.
split; [ auto with zfc | idtac ].
unfold equivalence in rEqv.
elim rEqv; clear rEqv; intros; elim H3; clear H3; intros.
unfold symmetry in H3.
generalize (H3 x y H); clear H H3; intros.
unfold transitivity in H4.
exact (H4 y x v2 H H1).
elim (axs_comprehension (fun y0 : E => In (couple y y0) r) a v2); intros;
generalize (H1 H0); clear H0 H1 H2; intros.
elim H0; clear H0; intros.
elim (axs_comprehension (fun y : E => In (couple x y) r) a v2); intros;
apply H3; clear H2 H3; intros.
split; [ auto with zfc | idtac ].
elim rEqv; clear rEqv; intros; elim H3; clear H3; intros;
unfold transitivity in H4.
exact (H4 x y v2 H H1).
Qed.
(* End of proof of lem_equivClass_eq                                       *)

(* Specifications: *)
(***************************************************************************)
(* Si x et y ne sont pas en relation, l'intersection de leurs classes      *)
(* d'equivalence respectives est vide.                                     *)
(***************************************************************************)
Lemma lem_inter_equivClass_empty :
forall (r a : E) (rRel : rel_sig r a a) (rEqv : equivalence r a rRel)
(x y : E),
~ In (couple x y) r ->
inter (equivClass r a rRel rEqv x) (equivClass r a rRel rEqv y) = Vide.