(* Proof of lem_exp_elem_prop_recip                                        *)
unfold fun_sig in |- *; intros.
elim H; clear H; intros; elim H0; clear H0; intros.
unfold exp in |- *.
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; apply H3;
clear H2 H3; intros.
split; intros.
elim (axs_parties (cartesien b a) f); intros; apply H3; clear H2 H3; intros.
generalize (lem_fun_elem_is_2tupple f H v3 H2); clear H2; intros.
elim H2; clear H2; intros; elim H2; clear H2; intros; elim H2; clear H2;
intros.
generalize (lem_fun_and_dom f x x0 H H2); intros.
generalize (lem_fun_and_img f x x0 H H2); intros.
elim (lem_cartesian_propertie b a v3); intros; apply H7; clear H6 H7; intros.
exists x; exists x0; split.
rewrite <- H0; auto with zfc.
unfold inc in H1; generalize (H1 x0 H5); clear H1 H5; intros.
split; auto with zfc.
unfold exUniq in |- *; intros.
generalize H2; clear H2; rewrite <- H0; intros.
generalize (lem_App f x H H2); intros.
elim H3; clear H3; intros; elim H3; clear H3; intros.
exists x0; split; [ auto with zfc | intros ].
elim H; intros.
exact (H7 x x0 y H4 H5).
Qed.
(* End of proof of lem_exp_elem_prop_recip                                 *)
(***************************************************************************)
(***************************************************************************)
(* Famille d'ensembles indexee                                             *)
(***************************************************************************)
(***************************************************************************)
Definition index (a I : E) (funa : fun_ a) (doma : dom a = I) :=
subset (fun x : E => True) (Img a).

(* Specifications: *)
Lemma lem_index_prop :
forall (a I : E) (funa : fun_ a) (doma : dom a = I),
index a I funa doma = Img a.