(* Proof of lem_fun_part_is_fun                                             *)
intros; unfold fun_ in |- *; split; intros.
exists (parties (dom f)); exists (parties (Img f)); unfold inc in |- *;
intros.
unfold fun_part in H.
elim
(axs_comprehension
(fun x : E => exists y : E, x = couple y (fun_img_directe f Af y))
(cartesien (parties (dom f)) (parties (Img f))) v0);
intros; generalize (H0 H); clear H H0 H1; intros.
elim H; clear H; intros; auto with zfc.
unfold fun_part in H; unfold fun_part in H0.
elim
(axs_comprehension
(fun x0 : E => exists y0 : E, x0 = couple y0 (fun_img_directe f Af y0))
(cartesien (parties (dom f)) (parties (Img f)))
(couple x y)); intros; generalize (H1 H); clear H H1 H2;
intros.
elim H; clear H; intros; elim H1; clear H1; intros.
elim
(axs_comprehension
(fun x0 : E => exists y : E, x0 = couple y (fun_img_directe f Af y))
(cartesien (parties (dom f)) (parties (Img f)))
(couple x z)); intros; generalize (H2 H0); clear H0 H2 H3;
intros.
elim H0; clear H0; intros; elim H2; clear H2; intros.
elim (lem_couple_propertie x x0 y (fun_img_directe f Af x0)); intros;
generalize (H3 H1); clear H1 H3 H4; intros.
elim H1; clear H1; intros.
rewrite H3; clear H3; rewrite <- H1; clear H1.
elim (lem_couple_propertie x x1 z (fun_img_directe f Af x1)); intros;
generalize (H1 H2); clear H2 H3 H1; intros.
elim H1; clear H1; intros.
rewrite H2; clear H2; rewrite <- H1; clear H1; reflexivity.
Qed.
(* End of proof of lem_fun_part_is_fun                                     *)

(***************************************************************************)
(* Le domaine de (fun_part f ?) est l'ensemble des parties du domaine de f *)
(***************************************************************************)
Lemma lem_fun_part_dom :
forall (f : E) (Af : fun_ f), dom (fun_part f Af) = parties (dom f).