(* Proof of lem_exp_is_fun                                                 *)
unfold exp in H.
elim
(axs_comprehension
(fun f0 : E =>
forall x : E, In x b -> exUniq E (fun y : E => In (couple x y) f0))
(parties (cartesien b a)) f); intros; generalize (H0 H);
clear H H0 H1; intros.
elim H; clear H; intros.
exists b; exists a; unfold inc in |- *; intros.
elim (axs_parties (cartesien b a) f); intros; generalize (H2 H);
clear H H2 H3; intros.
exact (H v0 H1).
unfold exp in H.
elim
(axs_comprehension
(fun f0 : E =>
forall x : E, In x b -> exUniq E (fun y : E => In (couple x y) f0))
(parties (cartesien b a)) f); intros; generalize (H2 H);
clear H H2 H3; intros.
elim H; clear H; intros.
elim (axs_parties (cartesien b a) f); intros; generalize (H3 H);
clear H H3 H4; intros.
generalize (H (couple x y) H0); intros.
elim (lem_cartesian_propertie b a (couple x y)); intros; generalize (H4 H3);
clear H3 H4 H5; intros.
elim H3; clear H3; intros; elim H3; clear H3; intros; elim H3; clear H3;
intros; elim H4; clear H4; intros.
elim (lem_couple_propertie x x0 y x1); intros; generalize (H6 H5);
clear H5 H6 H7; intros.
elim H5; clear H5; intros.
generalize H3; clear H3; rewrite <- H5; intros.
generalize (H2 x H3); clear H2 H3; intros.
unfold exUniq in H2.
elim H2; clear H2; intros; elim H2; clear H2; intros.
generalize (H3 y H0); intros.
generalize (H3 z H1); intros.
rewrite <- H7; rewrite <- H8; reflexivity.
Qed.
(* End of proof of lem_exp_is_fun                                          *)

(* Specifications: *)
(***************************************************************************)
(* Le domaine d'un element de (exp a b) est b                              *)
(***************************************************************************)
Lemma lem_exp_elem_dom : forall a b f : E, In f (exp a b) -> dom f = b.
intros.