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