(* 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)).

Lemma lem_fun_equiv_is_equiv : forall (f : E) (Af : fun_ f), equivalence (equiv_fun f Af) (dom f) (lem_fun_equiv_is_rel f Af).