Braided and symmetric monoidal categories #
The basic definitions of braided monoidal categories, and symmetric monoidal categories, as well as braided functors.
Implementation note #
We make BraidedCategory
another typeclass, but then have SymmetricCategory
extend this.
The rationale is that we are not carrying any additional data, just requiring a property.
Future work #
- Construct the Drinfeld center of a monoidal category as a braided monoidal category.
- Say something about pseudo-natural transformations.
References #
- [Pavel Etingof, Shlomo Gelaki, Dmitri Nikshych, Victor Ostrik, Tensor categories][egno15]
A braided monoidal category is a monoidal category equipped with a braiding isomorphism
β_ X Y : X ⊗ Y ≅ Y ⊗ X
which is natural in both arguments,
and also satisfies the two hexagon identities.
- braiding (X Y : C) : CategoryTheory.MonoidalCategoryStruct.tensorObj X Y ≅ CategoryTheory.MonoidalCategoryStruct.tensorObj Y X
The braiding natural isomorphism.
- braiding_naturality_right (X : C) {Y Z : C} (f : Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft X f) (β_ X Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Y).hom (CategoryTheory.MonoidalCategoryStruct.whiskerRight f X)
- braiding_naturality_left {X Y : C} (f : X ⟶ Y) (Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight f Z) (β_ Y Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Z).hom (CategoryTheory.MonoidalCategoryStruct.whiskerLeft Z f)
- hexagon_forward (X Y Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator X Y Z).hom (CategoryTheory.CategoryStruct.comp (β_ X (CategoryTheory.MonoidalCategoryStruct.tensorObj Y Z)).hom (CategoryTheory.MonoidalCategoryStruct.associator Y Z X).hom) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight (β_ X Y).hom Z) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator Y X Z).hom (CategoryTheory.MonoidalCategoryStruct.whiskerLeft Y (β_ X Z).hom))
The first hexagon identity.
- hexagon_reverse (X Y Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator X Y Z).inv (CategoryTheory.CategoryStruct.comp (β_ (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y) Z).hom (CategoryTheory.MonoidalCategoryStruct.associator Z X Y).inv) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft X (β_ Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator X Z Y).inv (CategoryTheory.MonoidalCategoryStruct.whiskerRight (β_ X Z).hom Y))
The second hexagon identity.
Instances
The braiding natural isomorphism.
Equations
- CategoryTheory.termβ_ = Lean.ParserDescr.node `CategoryTheory.termβ_ 1024 (Lean.ParserDescr.symbol "β_")
Instances For
Verifying the axioms for a braiding by checking that the candidate braiding is sent to a braiding by a faithful monoidal functor.
Equations
- CategoryTheory.braidedCategoryOfFaithful F β w = { braiding := β, braiding_naturality_right := ⋯, braiding_naturality_left := ⋯, hexagon_forward := ⋯, hexagon_reverse := ⋯ }
Instances For
Pull back a braiding along a fully faithful monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
We now establish how the braiding interacts with the unitors.
I couldn't find a detailed proof in print, but this is discussed in:
- Proposition 1 of André Joyal and Ross Street, "Braided monoidal categories", Macquarie Math Reports 860081 (1986).
- Proposition 2.1 of André Joyal and Ross Street, "Braided tensor categories" , Adv. Math. 102 (1993), 20–78.
- Exercise 8.1.6 of Etingof, Gelaki, Nikshych, Ostrik, "Tensor categories", vol 25, Mathematical Surveys and Monographs (2015), AMS.
A symmetric monoidal category is a braided monoidal category for which the braiding is symmetric.
See https://stacks.math.columbia.edu/tag/0FFW.
- braiding_naturality_right (X : C) {Y Z : C} (f : Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft X f) (β_ X Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Y).hom (CategoryTheory.MonoidalCategoryStruct.whiskerRight f X)
- braiding_naturality_left {X Y : C} (f : X ⟶ Y) (Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight f Z) (β_ Y Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Z).hom (CategoryTheory.MonoidalCategoryStruct.whiskerLeft Z f)
- hexagon_forward (X Y Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator X Y Z).hom (CategoryTheory.CategoryStruct.comp (β_ X (CategoryTheory.MonoidalCategoryStruct.tensorObj Y Z)).hom (CategoryTheory.MonoidalCategoryStruct.associator Y Z X).hom) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight (β_ X Y).hom Z) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator Y X Z).hom (CategoryTheory.MonoidalCategoryStruct.whiskerLeft Y (β_ X Z).hom))
- hexagon_reverse (X Y Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator X Y Z).inv (CategoryTheory.CategoryStruct.comp (β_ (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y) Z).hom (CategoryTheory.MonoidalCategoryStruct.associator Z X Y).inv) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft X (β_ Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator X Z Y).inv (CategoryTheory.MonoidalCategoryStruct.whiskerRight (β_ X Z).hom Y))
- symmetry (X Y : C) : CategoryTheory.CategoryStruct.comp (β_ X Y).hom (β_ Y X).hom = CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y)
Instances
A lax braided functor between braided monoidal categories is a lax monoidal functor which preserves the braiding.
- μ' (X Y : C) : CategoryTheory.MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y) ⟶ F.obj (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y)
- μ'_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) (CategoryTheory.Functor.LaxMonoidal.μ' Y X') = CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' X X') (F.map (CategoryTheory.MonoidalCategoryStruct.whiskerRight f X'))
- μ'_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) (CategoryTheory.Functor.LaxMonoidal.μ' X' Y) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' X' X) (F.map (CategoryTheory.MonoidalCategoryStruct.whiskerLeft X' f))
- associativity' (X Y Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight (CategoryTheory.Functor.LaxMonoidal.μ' X Y) (F.obj Z)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y) Z) (F.map (CategoryTheory.MonoidalCategoryStruct.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X) (CategoryTheory.Functor.LaxMonoidal.μ' Y Z)) (CategoryTheory.Functor.LaxMonoidal.μ' X (CategoryTheory.MonoidalCategoryStruct.tensorObj Y Z)))
- left_unitality' (X : C) : (CategoryTheory.MonoidalCategoryStruct.leftUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight CategoryTheory.Functor.LaxMonoidal.ε' (F.obj X)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' (𝟙_ C) X) (F.map (CategoryTheory.MonoidalCategoryStruct.leftUnitor X).hom))
- right_unitality' (X : C) : (CategoryTheory.MonoidalCategoryStruct.rightUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X) CategoryTheory.Functor.LaxMonoidal.ε') (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' X (𝟙_ C)) (F.map (CategoryTheory.MonoidalCategoryStruct.rightUnitor X).hom))
- braided (X Y : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ F X Y) (F.map (β_ X Y).hom) = CategoryTheory.CategoryStruct.comp (β_ (F.obj X) (F.obj Y)).hom (CategoryTheory.Functor.LaxMonoidal.μ F Y X)
Instances
Bundled version of lax braided functors.
- obj : C → D
- map_id (X : C) : self.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (self.obj X)
- map_comp {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) : self.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (self.map f) (self.map g)
- laxBraided : self.LaxBraided
Instances For
Constructor for LaxBraidedFunctor C D
.
Equations
- CategoryTheory.LaxBraidedFunctor.of F = { toFunctor := F, laxBraided := inferInstance }
Instances For
The lax monoidal functor induced by a lax braided functor.
Equations
- F.toLaxMonoidalFunctor = { toFunctor := F.toFunctor, laxMonoidal := inferInstance }
Instances For
Constructor for morphisms in the category LaxBraiededFunctor C D
.
Equations
- CategoryTheory.LaxBraidedFunctor.homMk f = { hom := f, isMonoidal := ⋯ }
Instances For
Constructor for isomorphisms in the category LaxBraidedFunctor C D
.
Equations
- CategoryTheory.LaxBraidedFunctor.isoMk e = { hom := CategoryTheory.LaxBraidedFunctor.homMk e.hom, inv := CategoryTheory.LaxBraidedFunctor.homMk e.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
The forgetful functor from lax braided functors to lax monoidal functors.
Equations
Instances For
The forgetful functor from lax braided functors to lax monoidal functors is fully faithful.
Equations
Instances For
Constructor for isomorphisms between lax braided functors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A braided functor between braided monoidal categories is a monoidal functor which preserves the braiding.
- μ' (X Y : C) : CategoryTheory.MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y) ⟶ F.obj (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y)
- μ'_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) (CategoryTheory.Functor.LaxMonoidal.μ' Y X') = CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' X X') (F.map (CategoryTheory.MonoidalCategoryStruct.whiskerRight f X'))
- μ'_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) (CategoryTheory.Functor.LaxMonoidal.μ' X' Y) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' X' X) (F.map (CategoryTheory.MonoidalCategoryStruct.whiskerLeft X' f))
- associativity' (X Y Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight (CategoryTheory.Functor.LaxMonoidal.μ' X Y) (F.obj Z)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y) Z) (F.map (CategoryTheory.MonoidalCategoryStruct.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X) (CategoryTheory.Functor.LaxMonoidal.μ' Y Z)) (CategoryTheory.Functor.LaxMonoidal.μ' X (CategoryTheory.MonoidalCategoryStruct.tensorObj Y Z)))
- left_unitality' (X : C) : (CategoryTheory.MonoidalCategoryStruct.leftUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight CategoryTheory.Functor.LaxMonoidal.ε' (F.obj X)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' (𝟙_ C) X) (F.map (CategoryTheory.MonoidalCategoryStruct.leftUnitor X).hom))
- right_unitality' (X : C) : (CategoryTheory.MonoidalCategoryStruct.rightUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X) CategoryTheory.Functor.LaxMonoidal.ε') (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ' X (𝟙_ C)) (F.map (CategoryTheory.MonoidalCategoryStruct.rightUnitor X).hom))
- δ' (X Y : C) : F.obj (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y) ⟶ CategoryTheory.MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y)
- δ'_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.OplaxMonoidal.δ' X X') (CategoryTheory.MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.MonoidalCategoryStruct.whiskerRight f X')) (CategoryTheory.Functor.OplaxMonoidal.δ' Y X')
- δ'_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.OplaxMonoidal.δ' X' X) (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.MonoidalCategoryStruct.whiskerLeft X' f)) (CategoryTheory.Functor.OplaxMonoidal.δ' X' Y)
- oplax_associativity' (X Y Z : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.OplaxMonoidal.δ' (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y) Z) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategoryStruct.whiskerRight (CategoryTheory.Functor.OplaxMonoidal.δ' X Y) (F.obj Z)) (CategoryTheory.MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.MonoidalCategoryStruct.associator X Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.OplaxMonoidal.δ' X (CategoryTheory.MonoidalCategoryStruct.tensorObj Y Z)) (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X) (CategoryTheory.Functor.OplaxMonoidal.δ' Y Z)))
- oplax_left_unitality' (X : C) : (CategoryTheory.MonoidalCategoryStruct.leftUnitor (F.obj X)).inv = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.MonoidalCategoryStruct.leftUnitor X).inv) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.OplaxMonoidal.δ' (𝟙_ C) X) (CategoryTheory.MonoidalCategoryStruct.whiskerRight CategoryTheory.Functor.OplaxMonoidal.η' (F.obj X)))
- oplax_right_unitality' (X : C) : (CategoryTheory.MonoidalCategoryStruct.rightUnitor (F.obj X)).inv = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.MonoidalCategoryStruct.rightUnitor X).inv) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.OplaxMonoidal.δ' X (𝟙_ C)) (CategoryTheory.MonoidalCategoryStruct.whiskerLeft (F.obj X) CategoryTheory.Functor.OplaxMonoidal.η'))
- μ_δ (X Y : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ F X Y) (CategoryTheory.Functor.OplaxMonoidal.δ F X Y) = CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y))
- δ_μ (X Y : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.OplaxMonoidal.δ F X Y) (CategoryTheory.Functor.LaxMonoidal.μ F X Y) = CategoryTheory.CategoryStruct.id (F.obj (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y))
- braided (X Y : C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ F X Y) (F.map (β_ X Y).hom) = CategoryTheory.CategoryStruct.comp (β_ (F.obj X) (F.obj Y)).hom (CategoryTheory.Functor.LaxMonoidal.μ F Y X)
Instances
A braided category with a faithful braided functor to a symmetric category is itself symmetric.
Instances For
Equations
- One or more equations did not get rendered due to their size.
A multiplicative morphism between commutative monoids gives a braided functor between the corresponding discrete braided monoidal categories.
Swap the second and third objects in (X₁ ⊗ X₂) ⊗ (Y₁ ⊗ Y₂)
. This is used to strength the
tensor product functor from C × C
to C
as a monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse of tensorμ
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
The identity functor on C
, viewed as a functor from C
to its
monoidal opposite, upgraded to a braided functor.
The identity functor on C
, viewed as a functor from the
monoidal opposite of C
to C
, upgraded to a braided functor.
The braided monoidal category obtained from C
by replacing its braiding
β_ X Y : X ⊗ Y ≅ Y ⊗ X
with the inverse (β_ Y X)⁻¹ : X ⊗ Y ≅ Y ⊗ X
.
This corresponds to the automorphism of the braid group swapping
over-crossings and under-crossings.
Equations
- CategoryTheory.reverseBraiding C = { braiding := fun (X Y : C) => (β_ Y X).symm, braiding_naturality_right := ⋯, braiding_naturality_left := ⋯, hexagon_forward := ⋯, hexagon_reverse := ⋯ }
Instances For
The identity functor from C
to C
, where the codomain is given the
reversed braiding, upgraded to a braided functor.