Zulip Chat Archive
Stream: Is there code for X?
Topic: isomorphism congruence on homs
Mario Carneiro (Jun 22 2024 at 23:49):
Is there a result like this somewhere in the library?
def CategoryTheory.Iso.equivHomLeft {C : Type u} [Category C]
{X Y Z : C} (α : X ≅ Y) : (X ⟶ Z) ≃ (Y ⟶ Z) where
toFun f := α.2 ≫ f
invFun f := α.1 ≫ f
left_inv _ := by simp
right_inv _ := by simp
Adam Topaz (Jun 23 2024 at 00:34):
I don’t think we do. Why is this useful?
Mario Carneiro (Jun 23 2024 at 00:34):
it's useful for composing equiv chains involving isomorphisms
Mario Carneiro (Jun 23 2024 at 00:35):
you could also have one with an iso on the right, or on both sides
Bhavik Mehta (Jun 23 2024 at 00:35):
You could maybe deduce this from Yoneda (and the result that an iso in type is an equiv)
Adam Topaz (Jun 23 2024 at 00:35):
Right. Use docs#CategoryTheory.Functor.mapIso with (co)yoneda
Adam Topaz (Jun 23 2024 at 00:36):
But I’m still not convinced this is too useful
Mario Carneiro (Jun 23 2024 at 00:37):
it's not too dissimilar from all the congr lemmas in Equiv.Basic
Bhavik Mehta (Jun 23 2024 at 00:42):
def CategoryTheory.Iso.isoHomLeft {C : Type u}
{X Y Z : C} (α : X ≅ Y) : (X ⟶ Z) ≅ (Y ⟶ Z) :=
(yoneda.obj Z).mapIso α.op.symm
Bhavik Mehta (Jun 23 2024 at 00:42):
def CategoryTheory.Iso.isoHomRight {C : Type u} [Category.{v} C]
{X Y Z : C} (α : X ≅ Y) : (Z ⟶ X) ≅ (Z ⟶ Y) :=
(coyoneda.obj (op Z)).mapIso α
and the dual
Bhavik Mehta (Jun 23 2024 at 00:45):
(and .toEquiv to make them equivs like your original question)
Mario Carneiro (Jun 23 2024 at 00:45):
unfortunately it's not defeq because you swapped out the equivs for isos
Bhavik Mehta (Jun 23 2024 at 00:46):
Did I successfully pre-empt you by 8 seconds? :D
Mario Carneiro (Jun 23 2024 at 00:46):
it works, but it still looks like something that should have a minimal API
Kim Morrison (Jun 23 2024 at 00:50):
It certainly can't hurt to have this.
Joël Riou (Jun 23 2024 at 16:59):
Mario Carneiro said:
Is there a result like this somewhere in the library?
def CategoryTheory.Iso.equivHomLeft {C : Type u} [Category C] {X Y Z : C} (α : X ≅ Y) : (X ⟶ Z) ≃ (Y ⟶ Z) where toFun f := α.2 ≫ f invFun f := α.1 ≫ f left_inv _ := by simp right_inv _ := by simp
I am introducing this in #13926.
Markus Himmel (Jun 23 2024 at 17:21):
Isn't this just a special case of docs#CategoryTheory.Iso.homCongr ?
Mario Carneiro (Jun 25 2024 at 00:13):
It is! But I scroll down and notice that isoCongr
has left and right versions, so I think it would make sense to have it for homs too
Mario Carneiro (Jun 25 2024 at 00:14):
(you also get slightly better defeqs since it doesn't put identity compositions on the rhs)
Last updated: May 02 2025 at 03:31 UTC