Las funciones suprayectivas tienen inversa por la derecha
En Lean4, que \(g\) es una inversa por la izquierda de \(f\) está definido por
LeftInverse (g : β → α) (f : α → β) : Prop := ∀ x, g (f x) = x
que \(g\) es una inversa por la derecha de \(f\) está definido por
RightInverse (g : β → α) (f : α → β) : Prop := LeftInverse f g
y que \(f\) tenga inversa por la derecha está definido por
HasRightInverse (f : α → β) : Prop := ∃ g : β → α, RightInverse g f
Finalmente, que \(f\) es suprayectiva está definido por
def Surjective (f : α → β) : Prop := ∀ b, ∃ a, f a = b
Demostrar con Lean4 que si \(f\) es una función suprayectiva, entonces \(f\) tiene inversa por la derecha.
Para ello, completar la siguiente teoría de Lean4:
import Mathlib.Tactic open Function Classical variable {α β: Type _} variable {f : α → β} example (hf : Surjective f) : HasRightInverse f := by sorry