(* Proof of lem_x_in_fun_form                                              *)
intros.
elim Af; clear Af; intros.
elim H0; clear H0; intros; elim H0; clear H0; intros.
generalize (H0 x H); clear H H0; intros.
elim (lem_cartesian_propertie x0 x1 x); intros; generalize (H0 H);
clear H H0 H2; intros.
elim H; clear H; intros; elim H; clear H; intros; elim H; clear H; intros;
elim H0; clear H0; intros.
exists x2; exists x3; auto with zfc.
Qed.
(* End of proof of lem_x_in_fun_form                                       *)
(***************************************************************************)
(***************************************************************************)
(* Image d'une partie du domaine d'une application f par f                 *)
(***************************************************************************)
(***************************************************************************)
Definition fun_img_directe (f : E) (Af : fun_ f) (c : E) :=
subset
(fun x : E =>
In c (parties (dom f)) -> exists y : E, In y c /\ x = App f Af y)
(Img f).
(***************************************************************************)
(* On peut definir l'image reciproque d'une partie de l'image d'une        *)
(* application f.                                                          *)
(***************************************************************************)
Definition fun_img_inverse (f : E) (Af : fun_ f) (d : E) :=
subset (fun x : E => In d (parties (Img f)) -> In (App f Af x) d) (dom f).
(***************************************************************************)
(* Ces deux notions permettent de definir une application des parties de   *)
(* (dom f) dans les parties de (Img f)                                     *)
(***************************************************************************)
Definition fun_part (f : E) (Af : fun_ f) :=
subset (fun x : E => exists y : E, x = couple y (fun_img_directe f Af y))
(cartesien (parties (dom f)) (parties (Img f))).

(* Specifications: *)
(***************************************************************************)
(* fun_part est une application                                            *)
(***************************************************************************)
Lemma lem_fun_part_is_fun :
forall (f : E) (Af : fun_ f), fun_ (fun_part f Af).