(* Proof of lem_comp_intermed                                              *)
intros; unfold comp in H.
elim
(axs_comprehension
(fun c0 : E =>
exists y : E, In (couple (first c0) y) f /\ In (couple y (second c0)) g)
(cartesien a c) (couple x z)); intros; generalize (H0 H);
clear H H0 H1; intros.
elim H; clear H; intros; elim H0; clear H0; intros; elim H0; clear H0; intros.
generalize H0; clear H0; rewrite (lem_first_propertie x z); intros.
generalize H1; clear H1; rewrite (lem_second_propertie x z); intros.
exists x0; split; auto with zfc.
Qed.
(* End of proof of lem_comp_intermed                                       *)
(***************************************************************************)
(***************************************************************************)
(* Redefinissons maintenant une application dans le style f(x) = y         *)
(***************************************************************************)
(***************************************************************************)
Definition App (f : E) (Af : fun_ f) (x : E) :=
subset (fun z : E => exists y : E, In (couple x y) f /\ In z y)
(reunion (Img f)).

(* Specifications: *)
Lemma lem_eval_propertie :
forall (f x y : E) (Af : fun_ f), In (couple x y) f -> y = App f Af x.