Rigid (autonomous) monoidal categories #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines rigid (autonomous) monoidal categories and the necessary theory about exact pairings and duals.
Main definitions #
exact_pairing
of two objects of a monoidal category- Type classes
has_left_dual
andhas_right_dual
that capture that a pairing exists - The
right_adjoint_mate f
as a morphismfᘁ : Yᘁ ⟶ Xᘁ
for a morphismf : X ⟶ Y
- The classes of
right_rigid_category
,left_rigid_category
andrigid_category
Main statements #
comp_right_adjoint_mate
: 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 tensor_left Y ⊣ tensor_left X
from exact_pairing X Y
,
this is not a bijective correspondence.
I think the correct statement is that tensor_left Y
and tensor_left X
are
module endofunctors of C
as a right C
module category,
and exact_pairing X Y
is in bijection with adjunctions compatible with this right C
action.
References #
Tags #
rigid category, monoidal category
- coevaluation : 𝟙_ C ⟶ X ⊗ Y
- evaluation : Y ⊗ X ⟶ 𝟙_ C
- coevaluation_evaluation' : (𝟙 Y ⊗ η_ X Y) ≫ (α_ Y X Y).inv ≫ (ε_ X Y ⊗ 𝟙 Y) = (ρ_ Y).hom ≫ (λ_ Y).inv . "obviously"
- evaluation_coevaluation' : (η_ X Y ⊗ 𝟙 X) ≫ (α_ X Y X).hom ≫ (𝟙 X ⊗ ε_ X Y) = (λ_ X).hom ≫ (ρ_ X).inv . "obviously"
An exact pairing is a pair of objects X Y : C
which admit
a coevaluation and evaluation morphism which fulfill two triangle equalities.
Instances of this typeclass
Instances of other typeclasses for category_theory.exact_pairing
- category_theory.exact_pairing.has_sizeof_inst
Equations
- category_theory.exact_pairing_unit = {coevaluation := (ρ_ (𝟙_ C)).inv, evaluation := (ρ_ (𝟙_ C)).hom, coevaluation_evaluation' := _, evaluation_coevaluation' := _}
- right_dual : C
- exact : category_theory.exact_pairing X Xᘁ
A class of objects which have a right dual.
Instances of this typeclass
Instances of other typeclasses for category_theory.has_right_dual
- category_theory.has_right_dual.has_sizeof_inst
- left_dual : C
- exact : category_theory.exact_pairing ᘁY Y
A class of objects with have a left dual.
Instances of this typeclass
Instances of other typeclasses for category_theory.has_left_dual
- category_theory.has_left_dual.has_sizeof_inst
The right adjoint mate fᘁ : Xᘁ ⟶ Yᘁ
of a morphism f : X ⟶ Y
.
The left adjoint mate ᘁf : ᘁY ⟶ ᘁX
of a morphism f : X ⟶ Y
.
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 tensor_left_adjunction Y Y' : tensor_left Y' ⊣ tensor_left Y
.
This adjunction is often referred to as "Frobenius reciprocity" in the fusion categories / planar algebras / subfactors literature.
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.
If Y Y'
have an exact pairing,
then the functor tensor_left Y'
is left adjoint to tensor_left Y
.
Equations
- category_theory.tensor_left_adjunction Y Y' = category_theory.adjunction.mk_of_hom_equiv {hom_equiv := λ (X Z : C), category_theory.tensor_left_hom_equiv X Y Y' Z, hom_equiv_naturality_left_symm' := _, hom_equiv_naturality_right' := _}
If Y Y'
have an exact pairing,
then the functor tensor_right Y
is left adjoint to tensor_right Y'
.
Equations
- category_theory.tensor_right_adjunction Y Y' = category_theory.adjunction.mk_of_hom_equiv {hom_equiv := λ (X Z : C), category_theory.tensor_right_hom_equiv X Y Y' Z, hom_equiv_naturality_left_symm' := _, hom_equiv_naturality_right' := _}
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
category_theory.monoidal.functor_has_left_dual
. 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).
tensor_left_hom_equiv
commutes with tensoring on the right
tensor_right_hom_equiv
commutes with tensoring on the left
Transport an exact pairing across an isomorphism in the first argument.
Equations
- category_theory.exact_pairing_congr_left i = {coevaluation := η_ X' Y ≫ (i.inv ⊗ 𝟙 Y), evaluation := (𝟙 Y ⊗ i.hom) ≫ ε_ X' Y, coevaluation_evaluation' := _, evaluation_coevaluation' := _}
Transport an exact pairing across an isomorphism in the second argument.
Equations
- category_theory.exact_pairing_congr_right i = {coevaluation := η_ X Y' ≫ (𝟙 X ⊗ i.inv), evaluation := (i.hom ⊗ 𝟙 X) ≫ ε_ X Y', coevaluation_evaluation' := _, evaluation_coevaluation' := _}
Transport an exact pairing across isomorphisms.
Right duals are isomorphic.
Equations
- category_theory.right_dual_iso _x _x_1 = {hom := (𝟙 X)ᘁ, inv := (𝟙 X)ᘁ, hom_inv_id' := _, inv_hom_id' := _}
Left duals are isomorphic.
Equations
- category_theory.left_dual_iso p₁ p₂ = {hom := ᘁ(𝟙 Y), inv := ᘁ(𝟙 Y), hom_inv_id' := _, inv_hom_id' := _}
- right_dual : Π (X : C), category_theory.has_right_dual X
A right rigid monoidal category is one in which every object has a right dual.
Instances of this typeclass
Instances of other typeclasses for category_theory.right_rigid_category
- category_theory.right_rigid_category.has_sizeof_inst
- left_dual : Π (X : C), category_theory.has_left_dual X
A left rigid monoidal category is one in which every object has a right dual.
Instances of this typeclass
Instances of other typeclasses for category_theory.left_rigid_category
- category_theory.left_rigid_category.has_sizeof_inst
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
category_theory.monoidal.left_rigid_functor_category
. 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
- to_right_rigid_category : category_theory.right_rigid_category C
- to_left_rigid_category : category_theory.left_rigid_category C
A rigid monoidal category is a monoidal category which is left rigid and right rigid.
Instances of this typeclass
Instances of other typeclasses for category_theory.rigid_category
- category_theory.rigid_category.has_sizeof_inst