(* Proof of lem_first_propertie                                            *)
unfold first in H.
elim
(axs_comprehension
(fun x : E =>
exists a0 : E, (exists b0 : E, couple a b = couple a0 b0 /\ In x a0))
(reunion (reunion (couple a b))) v2); intros.
elim H0; clear H0 H1; intros; [ clear H | auto with zfc ].
elim H1; clear H1; intros.
elim H; clear H; intros.
elim H; clear H; intros.
elim (lem_couple_propertie a x b x0); intros.
elim H2; clear H2 H3; intros; [ clear H | auto with zfc ].
rewrite H2; auto with zfc.
unfold first in |- *.
elim
(axs_comprehension
(fun x : E =>
exists a0 : E, (exists b0 : E, couple a b = couple a0 b0 /\ In x a0))
(reunion (reunion (couple a b))) v2); intros.
apply H1; clear H1 H0; intros.
rewrite (lem_reunion_couple a b).
split;
[ idtac | exists a; exists b; split; [ reflexivity | auto with zfc ] ].
elim (lem_union_propertie a b v2); intros.
clear H0; unfold union in H1; apply H1; clear H1; intros.
left; auto with zfc.
Qed.
(* End of proof of lem_first_prop                                          *)

Lemma lem_second_propertie : forall a b : E, second (couple a b) = b.
intros; apply axs_extensionnalite; intros; unfold iff in |- *; split; intros.