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