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.MonoidalCategory.tensorObj X Y ≅ CategoryTheory.MonoidalCategory.tensorObj Y X
The braiding natural isomorphism.
- braiding_naturality_right : ∀ (X : C) {Y Z : C} (f : Y ⟶ Z), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft X f) (β_ X Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Y).hom (CategoryTheory.MonoidalCategory.whiskerRight f X)
- braiding_naturality_left : ∀ {X Y : C} (f : X ⟶ Y) (Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight f Z) (β_ Y Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Z).hom (CategoryTheory.MonoidalCategory.whiskerLeft Z f)
- hexagon_forward : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Y Z).hom (CategoryTheory.CategoryStruct.comp (β_ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)).hom (CategoryTheory.MonoidalCategory.associator Y Z X).hom) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (β_ X Y).hom Z) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator Y X Z).hom (CategoryTheory.MonoidalCategory.whiskerLeft Y (β_ X Z).hom))
The first hexagon identity.
- hexagon_reverse : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Y Z).inv (CategoryTheory.CategoryStruct.comp (β_ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z).hom (CategoryTheory.MonoidalCategory.associator Z X Y).inv) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft X (β_ Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Z Y).inv (CategoryTheory.MonoidalCategory.whiskerRight (β_ X Z).hom Y))
The second hexagon identity.
Instances
The first hexagon identity.
The second hexagon identity.
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 : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj X Y ≅ CategoryTheory.MonoidalCategory.tensorObj Y X
- braiding_naturality_right : ∀ (X : C) {Y Z : C} (f : Y ⟶ Z), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft X f) (β_ X Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Y).hom (CategoryTheory.MonoidalCategory.whiskerRight f X)
- braiding_naturality_left : ∀ {X Y : C} (f : X ⟶ Y) (Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight f Z) (β_ Y Z).hom = CategoryTheory.CategoryStruct.comp (β_ X Z).hom (CategoryTheory.MonoidalCategory.whiskerLeft Z f)
- hexagon_forward : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Y Z).hom (CategoryTheory.CategoryStruct.comp (β_ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)).hom (CategoryTheory.MonoidalCategory.associator Y Z X).hom) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (β_ X Y).hom Z) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator Y X Z).hom (CategoryTheory.MonoidalCategory.whiskerLeft Y (β_ X Z).hom))
- hexagon_reverse : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Y Z).inv (CategoryTheory.CategoryStruct.comp (β_ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z).hom (CategoryTheory.MonoidalCategory.associator Z X Y).inv) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft X (β_ Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Z Y).inv (CategoryTheory.MonoidalCategory.whiskerRight (β_ X Z).hom Y))
- symmetry : ∀ (X Y : C), CategoryTheory.CategoryStruct.comp (β_ X Y).hom (β_ Y X).hom = CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategory.tensorObj X Y)
Instances
A lax braided functor between braided monoidal categories is a lax monoidal functor which preserves the braiding.
- 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)
- ε : 𝟙_ D ⟶ self.obj (𝟙_ C)
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (self.obj X) (self.obj Y) ⟶ self.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
- μ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.map f) (self.obj X')) (self.μ Y X') = CategoryTheory.CategoryStruct.comp (self.μ X X') (self.map (CategoryTheory.MonoidalCategory.whiskerRight f X'))
- μ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X') (self.map f)) (self.μ X' Y) = CategoryTheory.CategoryStruct.comp (self.μ X' X) (self.map (CategoryTheory.MonoidalCategory.whiskerLeft X' f))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.μ X Y) (self.obj Z)) (CategoryTheory.CategoryStruct.comp (self.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (self.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (self.obj X) (self.obj Y) (self.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) (self.μ Y Z)) (self.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight self.ε (self.obj X)) (CategoryTheory.CategoryStruct.comp (self.μ (𝟙_ C) X) (self.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) self.ε) (CategoryTheory.CategoryStruct.comp (self.μ X (𝟙_ C)) (self.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
- braided : ∀ (X Y : C), CategoryTheory.CategoryStruct.comp (self.μ X Y) (self.map (β_ X Y).hom) = CategoryTheory.CategoryStruct.comp (β_ (self.obj X) (self.obj Y)).hom (self.μ Y X)
Instances For
The identity lax braided monoidal functor.
Equations
- CategoryTheory.LaxBraidedFunctor.id C = { toLaxMonoidalFunctor := (CategoryTheory.MonoidalFunctor.id C).toLaxMonoidalFunctor, braided := ⋯ }
Instances For
Equations
- CategoryTheory.LaxBraidedFunctor.instInhabited C = { default := CategoryTheory.LaxBraidedFunctor.id C }
The composition of lax braided monoidal functors.
Equations
Instances For
Equations
- CategoryTheory.LaxBraidedFunctor.categoryLaxBraidedFunctor = CategoryTheory.InducedCategory.category CategoryTheory.LaxBraidedFunctor.toLaxMonoidalFunctor
Interpret a natural isomorphism of the underlying lax monoidal functors as an isomorphism of the lax braided monoidal functors.
Equations
- CategoryTheory.LaxBraidedFunctor.mkIso i = { hom := i.hom, inv := i.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
A braided functor between braided monoidal categories is a monoidal functor which preserves the braiding.
- 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)
- ε : 𝟙_ D ⟶ self.obj (𝟙_ C)
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (self.obj X) (self.obj Y) ⟶ self.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
- μ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.map f) (self.obj X')) (self.μ Y X') = CategoryTheory.CategoryStruct.comp (self.μ X X') (self.map (CategoryTheory.MonoidalCategory.whiskerRight f X'))
- μ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X') (self.map f)) (self.μ X' Y) = CategoryTheory.CategoryStruct.comp (self.μ X' X) (self.map (CategoryTheory.MonoidalCategory.whiskerLeft X' f))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.μ X Y) (self.obj Z)) (CategoryTheory.CategoryStruct.comp (self.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (self.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (self.obj X) (self.obj Y) (self.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) (self.μ Y Z)) (self.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight self.ε (self.obj X)) (CategoryTheory.CategoryStruct.comp (self.μ (𝟙_ C) X) (self.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) self.ε) (CategoryTheory.CategoryStruct.comp (self.μ X (𝟙_ C)) (self.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
- ε_isIso : CategoryTheory.IsIso self.ε
- μ_isIso : ∀ (X Y : C), CategoryTheory.IsIso (self.μ X Y)
- braided : ∀ (X Y : C), self.map (β_ X Y).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.inv (self.μ X Y)) (CategoryTheory.CategoryStruct.comp (β_ (self.obj X) (self.obj Y)).hom (self.μ Y X))
Instances For
A braided category with a faithful braided functor to a symmetric category is itself symmetric.
Instances For
Turn a braided functor into a lax braided functor.
Equations
- CategoryTheory.BraidedFunctor.toLaxBraidedFunctor C D F = { toLaxMonoidalFunctor := F.toLaxMonoidalFunctor, braided := ⋯ }
Instances For
The identity braided monoidal functor.
Equations
- CategoryTheory.BraidedFunctor.id C = { toMonoidalFunctor := CategoryTheory.MonoidalFunctor.id C, braided := ⋯ }
Instances For
Equations
- CategoryTheory.BraidedFunctor.instInhabited C = { default := CategoryTheory.BraidedFunctor.id C }
The composition of braided monoidal functors.
Equations
- CategoryTheory.BraidedFunctor.comp C D E F G = { toMonoidalFunctor := F.toMonoidalFunctor ⊗⋙ G.toMonoidalFunctor, braided := ⋯ }
Instances For
Equations
- CategoryTheory.BraidedFunctor.categoryBraidedFunctor C D = CategoryTheory.InducedCategory.category CategoryTheory.BraidedFunctor.toMonoidalFunctor
Interpret a natural isomorphism of the underlying monoidal functors as an isomorphism of the braided monoidal functors.
Equations
- CategoryTheory.BraidedFunctor.mkIso C D i = { hom := i.hom, inv := i.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
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.
Equations
- CategoryTheory.Discrete.braidedFunctor F = { toMonoidalFunctor := CategoryTheory.Discrete.monoidalFunctor F, braided := ⋯ }
Instances For
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 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
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The identity functor on C
, viewed as a functor from the
monoidal opposite of C
to C
, upgraded to a braided functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Equations
- CategoryTheory.SymmetricCategory.equivReverseBraiding C = { toMonoidalFunctor := CategoryTheory.MonoidalFunctor.id C, braided := ⋯ }