Rigid (autonomous) monoidal categories #
This file defines rigid (autonomous) monoidal categories and the necessary theory about exact pairings and duals.
Main definitions #
ExactPairing
of two objects of a monoidal category- Type classes
HasLeftDual
andHasRightDual
that capture that a pairing exists - The
rightAdjointMate f
as a morphismfᘁ : Yᘁ ⟶ Xᘁ
for a morphismf : X ⟶ Y
- The classes of
RightRigidCategory
,LeftRigidCategory
andRigidCategory
Main statements #
comp_rightAdjointMate
: The adjoint mates of the composition is the composition of adjoint mates.
Notations #
η_
andε_
denote the coevaluation and evaluation morphism of an exact pairing.Xᘁ
andᘁX
denote the right and left dual of an object, as well as the adjoint mate of a morphism.
Future work #
- Show that
X ⊗ Y
andYᘁ ⊗ Xᘁ
form an exact pairing. - Show that the left adjoint mate of the right adjoint mate of a morphism is the morphism itself.
- Simplify constructions in the case where a symmetry or braiding is present.
- Show that
ᘁ
gives an equivalence of categoriesC ≅ (Cᵒᵖ)ᴹᵒᵖ
. - Define pivotal categories (rigid categories equipped with a natural isomorphism
ᘁᘁ ≅ 𝟙 C
).
Notes #
Although we construct the adjunction tensorLeft Y ⊣ tensorLeft X
from ExactPairing X Y
,
this is not a bijective correspondence.
I think the correct statement is that tensorLeft Y
and tensorLeft X
are
module endofunctors of C
as a right C
module category,
and ExactPairing X Y
is in bijection with adjunctions compatible with this right C
action.
References #
Tags #
rigid category, monoidal category
An exact pairing is a pair of objects X Y : C
which admit
a coevaluation and evaluation morphism which fulfill two triangle equalities.
- coevaluation' : 𝟙_ C ⟶ CategoryTheory.MonoidalCategory.tensorObj X Y
Coevaluation of an exact pairing.
Do not use directly. Use
ExactPairing.coevaluation
instead. - evaluation' : CategoryTheory.MonoidalCategory.tensorObj Y X ⟶ 𝟙_ C
Evaluation of an exact pairing.
Do not use directly. Use
ExactPairing.evaluation
instead. - coevaluation_evaluation' : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft Y CategoryTheory.ExactPairing.coevaluation') (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator Y X Y).inv (CategoryTheory.MonoidalCategory.whiskerRight CategoryTheory.ExactPairing.evaluation' Y)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.rightUnitor Y).hom (CategoryTheory.MonoidalCategory.leftUnitor Y).inv
- evaluation_coevaluation' : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight CategoryTheory.ExactPairing.coevaluation' X) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Y X).hom (CategoryTheory.MonoidalCategory.whiskerLeft X CategoryTheory.ExactPairing.evaluation')) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.leftUnitor X).hom (CategoryTheory.MonoidalCategory.rightUnitor X).inv
Instances
Coevaluation of an exact pairing.
Instances For
Evaluation of an exact pairing.
Instances For
Coevaluation of an exact pairing.
Equations
- CategoryTheory.ExactPairing.termη_ = Lean.ParserDescr.node `CategoryTheory.ExactPairing.termη_ 1024 (Lean.ParserDescr.symbol "η_")
Instances For
Evaluation of an exact pairing.
Equations
- CategoryTheory.ExactPairing.termε_ = Lean.ParserDescr.node `CategoryTheory.ExactPairing.termε_ 1024 (Lean.ParserDescr.symbol "ε_")
Instances For
Equations
- One or more equations did not get rendered due to their size.
A class of objects which have a right dual.
- rightDual : C
The right dual of the object
X
. - exact : CategoryTheory.ExactPairing X Xᘁ
Instances
A class of objects which have a left dual.
- leftDual : C
The left dual of the object
X
. - exact : CategoryTheory.ExactPairing (ᘁY) Y
Instances
The left dual of the object X
.
Equations
- CategoryTheory.«termᘁ_» = Lean.ParserDescr.node `CategoryTheory.termᘁ_ 1024 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "ᘁ") (Lean.ParserDescr.cat `term 1024))
Instances For
The right dual of the object X
.
Equations
- CategoryTheory.«term_ᘁ» = Lean.ParserDescr.trailingNode `CategoryTheory.term_ᘁ 1024 1024 (Lean.ParserDescr.symbol "ᘁ")
Instances For
Equations
- CategoryTheory.hasRightDualUnit = CategoryTheory.HasRightDual.mk (𝟙_ C)
Equations
- CategoryTheory.hasLeftDualUnit = CategoryTheory.HasLeftDual.mk (𝟙_ C)
Equations
- CategoryTheory.hasRightDualLeftDual = CategoryTheory.HasRightDual.mk X
Equations
- CategoryTheory.hasLeftDualRightDual = CategoryTheory.HasLeftDual.mk X
The right adjoint mate fᘁ : Xᘁ ⟶ Yᘁ
of a morphism f : X ⟶ Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The left adjoint mate ᘁf : ᘁY ⟶ ᘁX
of a morphism f : X ⟶ Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The right adjoint mate fᘁ : Xᘁ ⟶ Yᘁ
of a morphism f : X ⟶ Y
.
Equations
- CategoryTheory.«term_ᘁ_1» = Lean.ParserDescr.trailingNode `CategoryTheory.term_ᘁ_1 1022 0 (Lean.ParserDescr.symbol "ᘁ")
Instances For
The left adjoint mate ᘁf : ᘁY ⟶ ᘁX
of a morphism f : X ⟶ Y
.
Equations
- CategoryTheory.«termᘁ__1» = Lean.ParserDescr.node `CategoryTheory.termᘁ__1 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "ᘁ") (Lean.ParserDescr.cat `term 0))
Instances For
The composition of right adjoint mates is the adjoint mate of the composition.
The composition of left adjoint mates is the adjoint mate of the composition.
Given an exact pairing on Y Y'
,
we get a bijection on hom-sets (Y' ⊗ X ⟶ Z) ≃ (X ⟶ Y ⊗ Z)
by "pulling the string on the left" up or down.
This gives the adjunction tensorLeftAdjunction Y Y' : tensorLeft Y' ⊣ tensorLeft Y
.
This adjunction is often referred to as "Frobenius reciprocity" in the fusion categories / planar algebras / subfactors literature.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given an exact pairing on Y Y'
,
we get a bijection on hom-sets (X ⊗ Y ⟶ Z) ≃ (X ⟶ Z ⊗ Y')
by "pulling the string on the right" up or down.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If Y Y'
have an exact pairing,
then the functor tensorLeft Y'
is left adjoint to tensorLeft Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If Y Y'
have an exact pairing,
then the functor tensor_right Y
is left adjoint to tensor_right Y'
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If Y
has a left dual ᘁY
, then it is a closed object, with the internal hom functor Y ⟶[C] -
given by left tensoring by ᘁY
.
This has to be a definition rather than an instance to avoid diamonds, for example between
category_theory.monoidal_closed.functor_closed
and
CategoryTheory.Monoidal.functorHasLeftDual
. Moreover, in concrete applications there is often
a more useful definition of the internal hom object than ᘁY ⊗ X
, in which case the closed
structure shouldn't come from has_left_dual
(e.g. in the category FinVect k
, it is more
convenient to define the internal hom as Y →ₗ[k] X
rather than ᘁY ⊗ X
even though these are
naturally isomorphic).
Equations
- CategoryTheory.closedOfHasLeftDual Y = { rightAdj := CategoryTheory.MonoidalCategory.tensorLeft ᘁY, adj := CategoryTheory.tensorLeftAdjunction (ᘁY) Y }
Instances For
tensorLeftHomEquiv
commutes with tensoring on the right
tensorRightHomEquiv
commutes with tensoring on the left
Transport an exact pairing across an isomorphism in the first argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transport an exact pairing across an isomorphism in the second argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transport an exact pairing across isomorphisms.
Instances For
Right duals are isomorphic.
Equations
- CategoryTheory.rightDualIso p₁ p₂ = { hom := CategoryTheory.CategoryStruct.id Xᘁ, inv := CategoryTheory.CategoryStruct.id Xᘁ, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Left duals are isomorphic.
Equations
- CategoryTheory.leftDualIso p₁ p₂ = { hom := ᘁCategoryTheory.CategoryStruct.id Y, inv := ᘁCategoryTheory.CategoryStruct.id Y, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
A right rigid monoidal category is one in which every object has a right dual.
- rightDual : (X : C) → CategoryTheory.HasRightDual X
Instances
A left rigid monoidal category is one in which every object has a right dual.
- leftDual : (X : C) → CategoryTheory.HasLeftDual X
Instances
Any left rigid category is monoidal closed, with the internal hom X ⟶[C] Y = ᘁX ⊗ Y
.
This has to be a definition rather than an instance to avoid diamonds, for example between
category_theory.monoidal_closed.functor_category
and
CategoryTheory.Monoidal.leftRigidFunctorCategory
. Moreover, in concrete applications there is
often a more useful definition of the internal hom object than ᘁY ⊗ X
, in which case the monoidal
closed structure shouldn't come the rigid structure (e.g. in the category FinVect k
, it is more
convenient to define the internal hom as Y →ₗ[k] X
rather than ᘁY ⊗ X
even though these are
naturally isomorphic).
Equations
- CategoryTheory.monoidalClosedOfLeftRigidCategory C = { closed := fun (X : C) => CategoryTheory.closedOfHasLeftDual X }
Instances For
A rigid monoidal category is a monoidal category which is left rigid and right rigid.