(* Proof of lem_projQuotient_sig                                           *)
intros; unfold fun_sig in |- *.
split;
[ exact (lem_projQuotient_is_fun r a rRel rEqv rD)
| split;
[ exact (lem_projQuotient_dom r a rRel rEqv rD)
| unfold inc in |- *; intros ] ].
generalize H; rewrite (lem_projQuotient_img r a rRel rEqv rD); tauto.
Qed.
(* End of proof of lem_projQuotient_sig                                    *)
(***************************************************************************)
(***************************************************************************)
(* Theoreme 6 page 25 Algebre Tome 1 (Mac LANE & BIRKHOFF)                 *)
(* Propriete fondamentale de l'ensemble quotient                           *)
(***************************************************************************)
(***************************************************************************)

(* Specifications: *)
(***************************************************************************)
(* Si x et y ont meme classe d'equivalence, alors ils sont en relation     *)
(***************************************************************************)
Lemma lem_equivClass_is_same :
forall (r a : E) (rRel : rel_sig r a a) (rEqv : equivalence r a rRel)
(rD : rdom r a a rRel = a) (x y : E),
In x a ->
In y a ->
equivClass r a rRel rEqv x = equivClass r a rRel rEqv y -> In (couple x y) r.