(* End of proof of lem_fun_recip_involutive_under_bij                      *)

(***************************************************************************)
(***************************************************************************)
(* Exponantiation de a par b                                               *)
(***************************************************************************)
(***************************************************************************)

(***************************************************************************)
(* exp a b est l'ensemble des applications de b dans a                     *)
(***************************************************************************)
Definition exp (a b : E) :=
  subset
    (fun f : E =>
     forall x : E, In x b -> exUniq _ (fun y : E => In (couple x y) f))
    (parties (cartesien b a)).

(* Specifications: *)
Lemma lem_exp_elem_is_fun : forall a b f : E, In f (exp a b) -> fun_ f.
Lemma lem_exp_elem_dom : forall a b f : E, In f (exp a b) -> dom f = b.
Lemma lem_exp_elem_img : forall a b f : E, In f (exp a b) -> inc (Img f) a.
Lemma lem_exp_elem_prop : forall a b f : E, In f (exp a b) -> fun_sig f b a.
Lemma lem_fun_elem_is_2tupple : forall (f : E) (Af : fun_ f) (c : E), In c f -> exists x : E, (exists y : E, In (couple x y) f /\ c = couple x y).
Lemma lem_exp_elem_prop_recip : forall a b f : E, fun_sig f b a -> In f (exp a b).