proposition: Lemma unique_inverse: forall {X Y:Type} (f:X->Y), invertible f -> exists! g:Y->X, (forall x:X, g (f x) = x) /\ (forall y:Y, f (g y) = y).
proof: Proof. intros. destruct H. exists g. red; split. tauto. intros. destruct H1. extensionality y. transitivity (g (f (x' y))). rewrite H2. reflexivity. rewrite H. reflexivity. Qed.
imports: Image Description FunctionalExtensionality