Closed monoidal categories #
Define (right) closed objects and (right) closed monoidal categories.
TODO #
Some of the theorems proved about cartesian closed categories should be generalised and moved to this file.
An object X
is (right) closed if (X ⊗ -)
is a left adjoint.
- rightAdj : CategoryTheory.Functor C C
a choice of a right adjoint for
tensorLeft X
tensorLeft X
is a left adjoint
Instances
A monoidal category C
is (right) monoidal closed if every object is (right) closed.
- closed : (X : C) → CategoryTheory.Closed X
Instances
If X
and Y
are closed then X ⊗ Y
is.
This isn't an instance because it's not usually how we want to construct internal homs,
we'll usually prove all objects are closed uniformly.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The unit object is always closed. This isn't an instance because most of the time we'll prove closedness for all objects at once, rather than just for this one.
Equations
- CategoryTheory.unitClosed = { rightAdj := CategoryTheory.Functor.id C, adj := CategoryTheory.Adjunction.id.ofNatIsoLeft (CategoryTheory.MonoidalCategory.leftUnitorNatIso C).symm }
Instances For
This is the internal hom A ⟶[C] -
.
Equations
Instances For
The adjunction between A ⊗ -
and A ⟹ -
.
Equations
- CategoryTheory.ihom.adjunction A = CategoryTheory.Closed.adj
Instances For
The evaluation natural transformation.
Equations
- CategoryTheory.ihom.ev A = (CategoryTheory.ihom.adjunction A).counit
Instances For
The coevaluation natural transformation.
Equations
Instances For
A ⟶[C] B
denotes the internal hom from A
to B
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.instPreservesColimitsTensorLeft A = (CategoryTheory.ihom.adjunction A).leftAdjointPreservesColimits
Currying in a monoidal closed category.
Equations
- CategoryTheory.MonoidalClosed.curry = ⇑((CategoryTheory.ihom.adjunction A).homEquiv Y X)
Instances For
Uncurrying in a monoidal closed category.
Equations
- CategoryTheory.MonoidalClosed.uncurry = ⇑((CategoryTheory.ihom.adjunction A).homEquiv Y X).symm
Instances For
The internal hom out of the unit is naturally isomorphic to the identity functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pre-compose an internal hom with an external hom.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The internal hom functor given by the monoidal closed structure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transport the property of being monoidal closed across a monoidal equivalence of categories
Equations
- One or more equations did not get rendered due to their size.
Instances For
Suppose we have a monoidal equivalence F : C ≌ D
, with D
monoidal closed. We can pull the
monoidal closed instance back along the equivalence. For X, Y, Z : C
, this lemma describes the
resulting currying map Hom(X ⊗ Y, Z) → Hom(Y, (X ⟶[C] Z))
. (X ⟶[C] Z
is defined to be
F⁻¹(F(X) ⟶[D] F(Z))
, so currying in C
is given by essentially conjugating currying in
D
by F.
)
Suppose we have a monoidal equivalence F : C ≌ D
, with D
monoidal closed. We can pull the
monoidal closed instance back along the equivalence. For X, Y, Z : C
, this lemma describes the
resulting uncurrying map Hom(Y, (X ⟶[C] Z)) → Hom(X ⊗ Y ⟶ Z)
. (X ⟶[C] Z
is
defined to be F⁻¹(F(X) ⟶[D] F(Z))
, so uncurrying in C
is given by essentially conjugating
uncurrying in D
by F.
)
The C-identity morphism
𝟙_ C ⟶ hom(x, x)
used to equip C
with the structure of a C
-category
Equations
Instances For
The uncurried composition morphism
x ⊗ (hom(x, y) ⊗ hom(y, z)) ⟶ (x ⊗ hom(x, y)) ⊗ hom(y, z) ⟶ y ⊗ hom(y, z) ⟶ z
.
The C
-composition morphism will be defined as the adjoint transpose of this map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The C
-composition morphism
hom(x, y) ⊗ hom(y, z) ⟶ hom(x, z)
used to equip C
with the structure of a C
-category
Equations
Instances For
Unfold the definition of id
.
This exists to streamline the proofs of MonoidalClosed.id_comp
and MonoidalClosed.comp_id
Unfold the definition of compTranspose
.
This exists to streamline the proof of MonoidalClosed.assoc
Unfold the definition of comp
.
This exists to streamline the proof of MonoidalClosed.assoc
The proofs of associativity and unitality use the following outline:
- Take adjoint transpose on each side of the equality (uncurry_injective)
- Do whatever rewrites/simps are necessary to apply uncurry_curry
- Conclude with simp
Left unitality of the enriched structure
Right unitality of the enriched structure
Associativity of the enriched structure