Zulip Chat Archive
Stream: Is there code for X?
Topic: Mono of diagonal is mono
Christian Merten (Jan 13 2024 at 22:28):
Is there somewhere:
import Mathlib
open CategoryTheory Limits
lemma mono_of_pullback_mono {C : Type u} [Category.{v} C] {X Y : C}
(f : X ⟶ Y) [HasPullback f f] [Mono (pullback.fst : pullback f f ⟶ X)] :
Mono f where
right_cancellation {Z} g h heq := by
have h2 : pullback.lift g h heq = pullback.lift g g rfl := by
apply (cancel_mono pullback.fst).mp
simp only [limit.lift_π, PullbackCone.mk_π_app]
convert_to pullback.lift g g rfl ≫ pullback.snd = h
exact (pullback.lift_snd g g (rfl : g ≫ f = g ≫ f)).symm
rw [← h2, limit.lift_π, PullbackCone.mk_π_app]
Andrew Yang (Jan 14 2024 at 03:27):
No but
import Mathlib.CategoryTheory.Limits.Shapes.Diagonal
open CategoryTheory Limits
lemma mono_of_pullback_mono {C : Type u} [Category.{v} C] {X Y : C}
(f : X ⟶ Y) [HasPullback f f] [Mono (pullback.fst : pullback f f ⟶ X)] :
Mono f :=
have := isIso_of_mono_of_isSplitEpi (pullback.fst : pullback f f ⟶ X)
(pullback.diagonal_isKernelPair f).mono_of_isIso_fst
Andrew Yang (Jan 14 2024 at 03:41):
I'd say you can make the proof inline unless you need to use it several times.
Andrew Yang (Jan 14 2024 at 03:41):
And also for the title, I think diagonal map usually refers to X ⟶ pullback f f
and I think we are indeed missing
import Mathlib.CategoryTheory.Limits.Shapes.Diagonal
open CategoryTheory Limits pullback
lemma mono_of_diagonal_epi {C : Type u} [Category.{v} C] {X Y : C}
(f : X ⟶ Y) [HasPullback f f] [Epi (pullback.diagonal f)] :
Mono f :=
have := isIso_of_epi_of_isSplitMono (pullback.diagonal f)
have : IsIso (pullback.fst : diagonalObj f ⟶ _) := by
rw [← (IsIso.inv_eq_of_hom_inv_id (diagonal_fst f))]
infer_instance
(pullback.diagonal_isKernelPair f).mono_of_isIso_fst
Christian Merten (Jan 14 2024 at 09:39):
Thank you!
Last updated: May 02 2025 at 03:31 UTC