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.
- braiding : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj X Y ≅ CategoryTheory.MonoidalCategory.tensorObj Y X
- braiding_naturality : ∀ {X X' Y Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom f g) (β_ Y Y').hom = CategoryTheory.CategoryStruct.comp (β_ X X').hom (CategoryTheory.MonoidalCategory.tensorHom g 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.tensorHom (β_ X Y).hom (CategoryTheory.CategoryStruct.id Z)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator Y X Z).hom (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id 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.tensorHom (CategoryTheory.CategoryStruct.id X) (β_ Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Z Y).inv (CategoryTheory.MonoidalCategory.tensorHom (β_ X Z).hom (CategoryTheory.CategoryStruct.id Y)))
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.
Instances
Verifying the axioms for a braiding by checking that the candidate braiding is sent to a braiding by a faithful monoidal functor.
Instances For
Pull back a braiding along a fully faithful monoidal functor.
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.
- braiding : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj X Y ≅ CategoryTheory.MonoidalCategory.tensorObj Y X
- braiding_naturality : ∀ {X X' Y Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom f g) (β_ Y Y').hom = CategoryTheory.CategoryStruct.comp (β_ X X').hom (CategoryTheory.MonoidalCategory.tensorHom g 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.tensorHom (β_ X Y).hom (CategoryTheory.CategoryStruct.id Z)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator Y X Z).hom (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id 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.tensorHom (CategoryTheory.CategoryStruct.id X) (β_ Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X Z Y).inv (CategoryTheory.MonoidalCategory.tensorHom (β_ X Z).hom (CategoryTheory.CategoryStruct.id Y)))
- symmetry : ∀ (X Y : C), CategoryTheory.CategoryStruct.comp (β_ X Y).hom (β_ Y X).hom = CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategory.tensorObj X Y)
A symmetric monoidal category is a braided monoidal category for which the braiding is symmetric.
See https://stacks.math.columbia.edu/tag/0FFW.
Instances
- obj : C → D
- map_id : ∀ (X : C), s.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (s.obj X)
- map_comp : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), s.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (s.map f) (s.map g)
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (s.obj X) (s.obj Y) ⟶ s.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
- μ_natural : ∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (s.map f) (s.map g)) (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor Y Y') = CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X X') (s.map (CategoryTheory.MonoidalCategory.tensorHom f g))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X Y) (CategoryTheory.CategoryStruct.id (s.obj Z))) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (s.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (s.obj X) (s.obj Y) (s.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (s.obj X)) (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor Y Z)) (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (s.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom s.ε (CategoryTheory.CategoryStruct.id (s.obj X))) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor (CategoryTheory.MonoidalCategory.tensorUnit C) X) (s.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (s.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (s.obj X)) s.ε) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X (CategoryTheory.MonoidalCategory.tensorUnit C)) (s.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
- braided : ∀ (X Y : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X Y) (s.map (β_ X Y).hom) = CategoryTheory.CategoryStruct.comp (β_ (s.obj X) (s.obj Y)).hom (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor Y X)
A lax braided functor between braided monoidal categories is a lax monoidal functor which preserves the braiding.
Instances For
The identity lax braided monoidal functor.
Instances For
The composition of lax braided monoidal functors.
Instances For
Interpret a natural isomorphism of the underlying lax monoidal functors as an isomorphism of the lax braided monoidal functors.
Instances For
- obj : C → D
- map_id : ∀ (X : C), s.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (s.obj X)
- map_comp : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), s.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (s.map f) (s.map g)
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (s.obj X) (s.obj Y) ⟶ s.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
- μ_natural : ∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (s.map f) (s.map g)) (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor Y Y') = CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X X') (s.map (CategoryTheory.MonoidalCategory.tensorHom f g))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X Y) (CategoryTheory.CategoryStruct.id (s.obj Z))) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (s.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (s.obj X) (s.obj Y) (s.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (s.obj X)) (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor Y Z)) (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (s.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom s.ε (CategoryTheory.CategoryStruct.id (s.obj X))) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor (CategoryTheory.MonoidalCategory.tensorUnit C) X) (s.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (s.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (s.obj X)) s.ε) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X (CategoryTheory.MonoidalCategory.tensorUnit C)) (s.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
- ε_isIso : CategoryTheory.IsIso s.ε
- μ_isIso : ∀ (X Y : C), CategoryTheory.IsIso (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X Y)
- braided : ∀ (X Y : C), s.map (β_ X Y).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.inv (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor X Y)) (CategoryTheory.CategoryStruct.comp (β_ (s.obj X) (s.obj Y)).hom (CategoryTheory.LaxMonoidalFunctor.μ s.toLaxMonoidalFunctor Y X))
A braided functor between braided monoidal categories is a monoidal functor which preserves the braiding.
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.
Instances For
The identity braided monoidal functor.
Instances For
The composition of braided monoidal functors.
Instances For
Interpret a natural isomorphism of the underlying monoidal functors as an isomorphism of the braided monoidal functors.
Instances For
A multiplicative morphism between commutative monoids gives a braided functor between the corresponding discrete braided monoidal categories.
Instances For
The strength of the tensor product functor from C × C
to C
.
Instances For
The tensor product functor from C × C
to C
as a monoidal functor.