The currying-uncurrying isomorphism between internal homs of a closed monoidal category #
For a closed monoidal category C, we construct the isomorphism of internal hom objects
C(x ⊗ y, z) ≅ C(y, C(x, z)) for any triple of objects x y z : C.
def
CategoryTheory.MonoidalClosed.ihomCurry
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
The currying operation taking a morphism (z ⊗ y) ⟶ x to a morphism y ⟶ C(z, x),
constructed as a morphism in C between internal homs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
CategoryTheory.MonoidalClosed.uncurry_ihomCurry
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
uncurry (ihomCurry x y z) = curry
(CategoryStruct.comp
(MonoidalCategoryStruct.associator x y ((ihom (MonoidalCategoryStruct.tensorObj x y)).obj z)).inv
((ihom.ev (MonoidalCategoryStruct.tensorObj x y)).app z))
theorem
CategoryTheory.MonoidalClosed.uncurry_uncurry_ihomCurry
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
uncurry (uncurry (ihomCurry x y z)) = CategoryStruct.comp (MonoidalCategoryStruct.associator x y ((ihom (MonoidalCategoryStruct.tensorObj x y)).obj z)).inv
((ihom.ev (MonoidalCategoryStruct.tensorObj x y)).app z)
def
CategoryTheory.MonoidalClosed.ihomUncurry
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
The uncurrying operation taking a morphism y ⟶ C(x, z) to a morphism (x ⊗ y) ⟶ z,
constructed as a morphism in C between internal homs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
CategoryTheory.MonoidalClosed.uncurry_ihomUncurry
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
uncurry (ihomUncurry x y z) = CategoryStruct.comp (MonoidalCategoryStruct.associator x y ((ihom y).obj ((ihom x).obj z))).hom
(CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft x ((ihom.ev y).app ((ihom x).obj z))) ((ihom.ev x).app z))
@[simp]
theorem
CategoryTheory.MonoidalClosed.ihomUncurry_ihomCurry
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
CategoryStruct.comp (ihomUncurry x y z) (ihomCurry x y z) = CategoryStruct.id ((ihom y).obj ((ihom x).obj z))
@[simp]
theorem
CategoryTheory.MonoidalClosed.ihomUncurry_ihomCurry_assoc
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
{Z : C}
(h : (ihom y).obj ((ihom x).obj z) ⟶ Z)
:
@[simp]
theorem
CategoryTheory.MonoidalClosed.ihomCurry_ihomUncurry
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
CategoryStruct.comp (ihomCurry x y z) (ihomUncurry x y z) = CategoryStruct.id ((ihom (MonoidalCategoryStruct.tensorObj x y)).obj z)
@[simp]
theorem
CategoryTheory.MonoidalClosed.ihomCurry_ihomUncurry_assoc
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
{Z : C}
(h : (ihom (MonoidalCategoryStruct.tensorObj x y)).obj z ⟶ Z)
:
def
CategoryTheory.MonoidalClosed.ihomCurryIso
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
The internal currying-uncurrying isomorphism C(x ⊗ y, z) ≅ C(y, C(x, z)).
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
CategoryTheory.MonoidalClosed.ihomCurryIso_inv
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
:
@[simp]
theorem
CategoryTheory.MonoidalClosed.ihomCurryIso_hom
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
(x y z : C)
[Closed x]
[Closed y]
[Closed (MonoidalCategoryStruct.tensorObj x y)]
: