Definition function_inverse {X Y:Type} (f:X->Y)
  (i:invertible f) : { g:Y->X | (forall x:X, g (f x) = x) /\
                                (forall y:Y, f (g y) = y) }
  :=
     (constructive_definite_description _
      (unique_inverse f i)).

(* Specifications: *)
Lemma bijective_impl_invertible: forall {X Y:Type} (f:X->Y), bijective f -> invertible f.
Lemma invertible_impl_bijective: forall {X Y:Type} (f:X->Y), invertible f -> bijective f.