(* Proof of lem_equivClass_in_parties_a                                    *)
intros.
elim (axs_parties a (equivClass r a rRel rEqv x)); intros; apply H0;
clear H H0; intros.
unfold equivClass in H.
elim (axs_comprehension (fun y : E => In (couple x y) r) a v3); intros;
generalize (H0 H); clear H H0 H1; intros.
elim H; clear H; intros; auto with zfc.
Qed.
(* End of proof of lem_equivClass_in_parties_a                             *)
(***************************************************************************)
(* Quotient d'un ensemble par une relation d'equivalence                   *)
(***************************************************************************)
Definition quotient (r a : E) (rRel : rel_sig r a a)
(rEqv : equivalence r a rRel) (rD : rdom r a a rRel = a) :=
subset
(fun x : E => exists y : E, In y a /\ x = equivClass r a rRel rEqv y)
(parties a).
(***************************************************************************)
(* Toute application induit une relation d'equivalence sur son domaine     *)
(* equiv_fun sera le "noyau d'equivalence" de l'application                *)
(***************************************************************************)
Definition equiv_fun (f : E) (Af : fun_ f) :=
subset
(fun x : E =>
exists a : E, (exists b : E, x = couple a b /\ App f Af a = App f Af b))
(cartesien (dom f) (dom f)).

(* Specifications: *)
Lemma lem_fun_equiv_is_rel :
forall (f : E) (Af : fun_ f), rel_sig (equiv_fun f Af) (dom f) (dom f).