(* Proof of lem_projQuotient_is_fun                                        *)
unfold fun_ in |- *; intros.
split; intros.
exists a; exists (quotient r a rRel rEqv rD); unfold inc in |- *; intros.
unfold projQuotient in H.
elim
(axs_comprehension
(fun x : E =>
exists z : E,
(exists t : E, x = couple z t /\ t = equivClass r a rRel rEqv z))
(cartesien a (quotient r a rRel rEqv rD)) v0);
intros; generalize (H0 H); clear H H0 H1; intros.
elim H; clear H; intros; clear H0; auto with zfc.
unfold projQuotient in H.
elim
(axs_comprehension
(fun x0 : E =>
exists z : E,
(exists t : E, x0 = couple z t /\ t = equivClass r a rRel rEqv z))
(cartesien a (quotient r a rRel rEqv rD)) (couple x y));
intros; generalize (H1 H); clear H H1 H2; intros.
unfold projQuotient in H0.
elim
(axs_comprehension
(fun x0 : E =>
exists z0 : E,
(exists t : E, x0 = couple z0 t /\ t = equivClass r a rRel rEqv z0))
(cartesien a (quotient r a rRel rEqv rD)) (couple x z));
intros; generalize (H1 H0); clear H0 H1 H2; intros.
elim H; clear H; intros; elim H1; clear H1; intros; elim H1; clear H1; intros;
elim H1; clear H1; intros.
elim (lem_couple_propertie x x0 y x1); intros; generalize (H3 H1);
clear H1 H3 H4; intros.
elim H1; clear H1; intros.
generalize H2; rewrite <- H1; rewrite <- H3; clear H1 H2 H3; intros.
rewrite H2; clear H H2.
elim H0; clear H0; intros; elim H0; clear H0; intros; elim H0; clear H0;
intros; elim H0; clear H0; intros.
elim (lem_couple_propertie x x2 z x3); intros; generalize (H2 H0);
clear H0 H2 H3; intros.
elim H0; clear H0; intros.
generalize H1; rewrite <- H0; rewrite <- H2; clear H0 H1 H2; intros.
rewrite H1; reflexivity.
Qed.
(* End of proof of lem_projQuotient_is_fun                                 *)

(* Specifications: *)
(***************************************************************************)
(* Le domaine de projQuotient est a                                        *)
(***************************************************************************)
Lemma lem_projQuotient_dom :
forall (r a : E) (rRel : rel_sig r a a) (rEqv : equivalence r a rRel)
(rD : rdom r a a rRel = a), dom (projQuotient r a rRel rEqv rD) = a.