(* End of proof of lem_subset                                              *)

(***************************************************************************)
(***************************************************************************)
(* applications                                                            *)
(***************************************************************************)
(***************************************************************************)
Definition fun_ (f : E) :=
  (exists a : E, (exists b : E, inc f (cartesien a b))) /\
  (forall x y z : E, In (couple x y) f -> In (couple x z) f -> y = z).(***************************************************************************)
(* Domaine d'une application                                               *)
(***************************************************************************)
Definition dom (f : E) :=
  subset (fun v0 : E => fun_ f -> exists v1 : E, In (couple v0 v1) f)
    (reunion (reunion f)).(***************************************************************************)
(* Image d'une application                                                 *)
(***************************************************************************)
Definition Img (f : E) :=
  subset (fun v1 : E => fun_ f -> exists v0 : E, In (couple v0 v1) f)
    (reunion (reunion f)).(***************************************************************************)
(* f est une application de a vers b                                       *)
(***************************************************************************)
Definition fun_sig (f a b : E) := fun_ f /\ dom f = a /\ inc (Img f) b.

(* Specifications: *)
Lemma lem_fun_sig_is_fun : forall f a b : E, fun_sig f a b -> fun_ f.
Lemma lem_fun_sig_dom : forall f a b : E, fun_sig f a b -> dom f = a.
Lemma lem_fun_sig_img : forall f a b : E, fun_sig f a b -> inc (Img f) b.