(* 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_inj_surj_is_bij : forall f a b : E, fun_surj f a b -> fun_inj f a b -> fun_bij f a b.