(* 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_sig_equiv_fun_make : forall (f a s : E) (Afs : fun_sig f a s) (x y : E), In x a -> In y a -> App f (lem_fun_sig_is_fun f a s Afs) x = App f (lem_fun_sig_is_fun f a s Afs) y -> In (couple x y) (equiv_fun f (lem_fun_sig_is_fun f a s Afs)).