(* Proof of lem_fun_img_prop2                                              *)
intros; unfold inc in |- *; intros.
unfold fun_img_inverse in |- *.
elim
(axs_comprehension
(fun x0 : E =>
In (fun_img_directe f Af x) (parties (Img f)) ->
In (App f Af x0) (fun_img_directe f Af x)) (dom f) v0);
intros; apply H2; clear H1 H2; intros.
split; intros.
elim (axs_parties (dom f) x); intros; generalize (H1 H); clear H H1 H2;
intros.
exact (H v0 H0).
unfold fun_img_directe in |- *.
elim
(axs_comprehension
(fun x0 : E =>
In x (parties (dom f)) -> exists y : E, In y x /\ x0 = App f Af y)
(Img f) (App f Af v0)); intros; apply H3; clear H2 H3;
intros.
split; [ idtac | intros; clear H2 ].
elim (axs_parties (dom f) x); intros; generalize (H2 H); clear H2 H3; intros.
generalize (H2 v0 H0); clear H2; intros.
generalize (lem_eval_prop2 f v0 Af H2); intros.
exact (lem_fun_and_img f v0 (App f Af v0) Af H3).
exists v0; split; [ auto with zfc | reflexivity ].
Qed.
(* End of proof of lem_fun_img_prop2                                       *)

(* Specifications: *)
(***************************************************************************)
(* fun_img_directe est un evaluateur de fun_part                           *)
(***************************************************************************)
Lemma lem_fun_part_eval_prop :
forall (f : E) (Af : fun_ f) (x : E),
In x (dom (fun_part f Af)) ->
App (fun_part f Af) (lem_fun_part_is_fun f Af) x = fun_img_directe f Af x.