Zulip Chat Archive
Stream: mathlib4
Topic: lift through an injective function
Jireh Loreaux (Apr 04 2025 at 22:05):
Do we have the following definition?
import Mathlib
open Set Function
variable {α β γ : Type*}
variable (f : α → γ) (g : β → γ) (hg : Injective g) (hfg : ∀ x, f x ∈ range g)
noncomputable def liftThrough (x : α) : β :=
(Equiv.ofInjective g hg).symm ((range g).codRestrict f hfg x)
variable {f g hg hfg}
@[simp]
lemma comp_liftThrough_apply {x : α} : g (liftThrough f g hg hfg x) = f x := by
simp [liftThrough, Equiv.apply_ofInjective_symm]
Eric Wieser (Apr 04 2025 at 22:09):
I think the injectivity is a distraction?
noncomputable def liftThrough (x : α) : β :=
(hfg x).choose
@[simp]
lemma comp_liftThrough_apply {x : α} : g (liftThrough f g hfg x) = f x :=
(hfg x).choose_spec
Etienne Marion (Apr 05 2025 at 06:30):
Is it the same as docs#Function.extend ?
Jireh Loreaux (Apr 05 2025 at 12:33):
No, it's just docs#Exists.choose
Last updated: May 02 2025 at 03:31 UTC