(* Proof of lem_OaN                                                        *)
unfold somme_disj in |- *; unfold Osomme_disj in |- *.
elim (lem_union_propertie (disj_l a) (disj_r b) v2); intros.
elim (lem_union_propertie (Odisj_l a) (Odisj_r b) v2); intros.
elim (axs_Odisj_l a v2); intros.
elim (axs_Odisj_r b v2); intros.
elim
(axs_comprehension (fun y : E => exists x : E, y = couple x Vide /\ In x a)
(cartesien a (singleton Vide)) v2); intros.
elim
(axs_comprehension
(fun y : E => exists x : E, y = couple x (singleton Vide) /\ In x b)
(cartesien b (singleton (singleton Vide))) v2);
intros.
unfold iff in |- *; split; intros.
elim H; clear H H0; intros;
[ clear H11; apply H2; clear H1 H2; intros
| clear H11; apply H2; clear H1 H2; intros
| auto with zfc ].
unfold disj_l in H.
elim H7; clear H7 H8; intros; [ clear H | auto with zfc ].
elim H1; clear H1; intros.
elim H; clear H; intros.
left; apply H4; clear H3 H4; intros.
exists x; split; auto with zfc.
unfold disj_r in H.
elim H9; clear H9 H10; intros; [ clear H | auto with zfc ].
elim H1; clear H1; intros.
elim H; clear H; intros.
right; apply H6; clear H5 H6; intros.
exists x; split; auto with zfc.
apply H0; clear H H0; intros.
elim H1; clear H1 H2; intros; [ clear H11 | clear H11 | auto with zfc ].
left; unfold disj_l in |- *; apply H8; clear H7 H8; intros.
apply lem_and_sym; elim H3; clear H3 H4; intros;
[ clear H | auto with zfc ].
elim H0; clear H0; intros.
split; [ exists x; split; auto with zfc | idtac ].
elim (lem_cartesian_propertie a (singleton Vide) v2); intros.
apply H2; clear H1 H2; exists x; exists Vide; split;
[ auto with zfc
| apply lem_and_sym; split; [ auto with zfc | idtac ] ].
unfold singleton in |- *; elim (axs_paire Vide Vide Vide); intros.
apply H2; clear H1 H2; left; reflexivity.
right; unfold disj_r in |- *; apply H10; clear H9 H10; intros.
apply lem_and_sym; elim H5; clear H5 H6; intros;
[ clear H | auto with zfc ].
elim H0; clear H0; intros.
split; [ exists x; split; auto with zfc | idtac ].
elim (lem_cartesian_propertie b (singleton (singleton Vide)) v2); intros.
apply H2; clear H1 H2; exists x; exists (singleton Vide); split;
[ auto with zfc
| apply lem_and_sym; split; [ auto with zfc | idtac ] ].
unfold singleton in |- *;
elim (axs_paire (paire Vide Vide) (paire Vide Vide) (paire Vide Vide));
intros.
apply H2; left; reflexivity.
Qed.
(* End of proof of lem_OaN                                                 *)
(***************************************************************************)
(* Extension des constructions d'ensembles                                 *)
(***************************************************************************)
(* Lemma lem_ext_set : (f:E->E)(P:E->Prop) (Ex[ns:E]((y:E)((In y ns) <-> (Ex[t:E]((y=(f t)) /\ (P t)))))) . (* Proof of lem_ext_set                                                    *)
????
(* End of proof of lem_ext_set                                             *)
*)

(***************************************************************************)
(*                     Projections et couples                              *)
(***************************************************************************)
(* Un lemme auxiliaire: La reunion d'un couple (a,b) est la paire {a,b}    *)
Lemma lem_reunion_couple : forall a b : E, reunion (couple a b) = paire a b.
intros; apply axs_extensionnalite; intros.