(* Proof of lem_equivClass_is_same                                         *)
intros.
generalize (lem_x_in_equivClass_x r a rRel rEqv rD x H)
(lem_x_in_equivClass_x r a rRel rEqv rD y H0); intros.
generalize H3; clear H3; rewrite <- H1; intros.
unfold equivClass in H3.
elim (axs_comprehension (fun y0 : E => In (couple x y0) r) a y); intros;
generalize (H4 H3); clear H3 H4 H5; intros.
elim H3; clear H3; intros; auto with zfc.
Qed.
(* End of proof of lem_equivClass_is_same                                  *)
Definition equiv_comp (r a : E) (rRel : rel_sig r a a)
(rEqv : equivalence r a rRel) (rD : rdom r a a rRel = a)
(s f : E) (Afs : fun_sig f a s)
(Pr : forall x y : E,
In (couple x y) r ->
App f (lem_fun_sig_is_fun f a s Afs) x =
App f (lem_fun_sig_is_fun f a s Afs) y) :=
subset
(fun z : E =>
exists x : E,
In x a /\
z =
couple (equivClass r a rRel rEqv x)
(App f (lem_fun_sig_is_fun f a s Afs) x))
(cartesien (quotient r a rRel rEqv rD) s).

(* Specifications: *)
(***************************************************************************)
(* equiv_comp est une application                                          *)
(***************************************************************************)
Lemma lem_equiv_comp_is_fun :
forall (r a : E) (rRel : rel_sig r a a) (rEqv : equivalence r a rRel)
(rD : rdom r a a rRel = a) (s f : E) (Afs : fun_sig f a s)
(Pr : forall x y : E,
In (couple x y) r ->
App f (lem_fun_sig_is_fun f a s Afs) x =
App f (lem_fun_sig_is_fun f a s Afs) y),
fun_ (equiv_comp r a rRel rEqv rD s f Afs Pr).