Zulip Chat Archive
Stream: Is there code for X?
Topic: Injectivity of equivalences
Jeremy Tan (Apr 18 2025 at 03:19):
Do we have these two lemmas?
lemma trans_injective_right {α β γ : Type*} {e₁ : α ≃ β} {e₂ e₃ : β ≃ γ}
(h : e₁.trans e₂ = e₁.trans e₃) : e₂ = e₃ := by
simp_rw [Equiv.ext_iff, trans_apply] at h
ext y; obtain ⟨x', hx'⟩ := e₁.surjective y; subst hx'; exact h x'
lemma trans_injective_left {α β γ : Type*} {e₁ e₂ : α ≃ β} {e₃ : β ≃ γ}
(h : e₁.trans e₃ = e₂.trans e₃) : e₁ = e₂ := by
simp_rw [Equiv.ext_iff, trans_apply] at h
ext y; exact e₃.injective (h y)
Markus Himmel (Apr 18 2025 at 05:34):
import Mathlib.Logic.Equiv.Defs
lemma trans_injective_right {α β γ : Type*} {e₁ : α ≃ β} {e₂ e₃ : β ≃ γ}
(h : e₁.trans e₂ = e₁.trans e₃) : e₂ = e₃ :=
(Equiv.equivCongr e₁.symm (Equiv.refl _)).injective h
lemma trans_injective_left {α β γ : Type*} {e₁ e₂ : α ≃ β} {e₃ : β ≃ γ}
(h : e₁.trans e₃ = e₂.trans e₃) : e₁ = e₂ :=
(Equiv.equivCongr (Equiv.refl _) e₃).injective h
Eric Wieser (Apr 18 2025 at 10:06):
These should be started with Injective
Last updated: May 02 2025 at 03:31 UTC