(* End of proof of lem_fun_sig_img                                         *)

(***************************************************************************)
(* f est une application surjective de a vers b                            *)
(***************************************************************************)
Definition fun_surj (f a b : E) := fun_ f /\ dom f = a /\ Img f = b.(***************************************************************************)
(* f est une application injective                                         *)
(***************************************************************************)
Definition fun_inj (f a b : E) :=
  fun_ f /\
  dom f = a /\
  inc (Img f) b /\
  (forall b : E, In b (Img f) -> exUniq _ (fun a : E => In (couple a b) f)).(***************************************************************************)
(* f est une bijection                                                     *)
(***************************************************************************)
Definition fun_bij (f a b : E) :=
  fun_ f /\
  dom f = a /\
  Img f = b /\
  (forall b : E, In b (Img f) -> exUniq _ (fun a : E => In (couple a b) f)).

Lemma lem_App_rev : forall f y : E, fun_ f -> In y (Img f) -> exists x : E, In x (dom f) /\ In (couple x y) f.