(* End of proof of lem_sig_equiv_fun_make                                  *)

(***************************************************************************)
(* Projection sur le quotient                                              *)
(***************************************************************************)
Definition projQuotient (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 z : E,
       (exists t : E, x = couple z t /\ t = equivClass r a rRel rEqv z))
    (cartesien a (quotient r a rRel rEqv rD)).

Lemma lem_projQuotient_eval : forall (r a : E) (rRel : rel_sig r a a) (rEqv : equivalence r a rRel) (rD : rdom r a a rRel = a) (x : E), In x a -> App (projQuotient r a rRel rEqv rD) (lem_projQuotient_is_fun r a rRel rEqv rD) x = equivClass r a rRel rEqv x.