Documentation

Mathlib.CategoryTheory.Monoidal.Braided

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 #

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

      We now establish how the braiding interacts with the unitors.

      I couldn't find a detailed proof in print, but this is discussed in:

      A symmetric monoidal category is a braided monoidal category for which the braiding is symmetric.

      See https://stacks.math.columbia.edu/tag/0FFW.

      Instances

        A lax braided functor between braided monoidal categories is a lax monoidal functor which preserves the braiding.

        Instances For

          Interpret a natural isomorphism of the underlying lax monoidal functors as an isomorphism of the lax braided monoidal functors.

          Instances For

            A braided functor between braided monoidal categories is a monoidal functor which preserves the braiding.

            Instances For
              @[simp]
              theorem CategoryTheory.BraidedFunctor.id_map (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] [CategoryTheory.BraidedCategory C] :
              ∀ {X Y : C} (f : X Y), (CategoryTheory.BraidedFunctor.id C).toMonoidalFunctor.toLaxMonoidalFunctor.toFunctor.map f = f

              Interpret a natural isomorphism of the underlying monoidal functors as an isomorphism of the braided monoidal functors.

              Instances For
                @[simp]
                theorem CategoryTheory.Discrete.braidedFunctor_ε {M : Type u} [CommMonoid M] {N : Type u} [CommMonoid N] (F : M →* N) :
                (CategoryTheory.Discrete.braidedFunctor F).toMonoidalFunctor.toLaxMonoidalFunctor = CategoryTheory.Discrete.eqToHom (_ : 1 = F 1)
                @[simp]
                theorem CategoryTheory.Discrete.braidedFunctor_map {M : Type u} [CommMonoid M] {N : Type u} [CommMonoid N] (F : M →* N) :
                ∀ {X Y : CategoryTheory.Discrete M} (f : X Y), (CategoryTheory.Discrete.braidedFunctor F).toMonoidalFunctor.toLaxMonoidalFunctor.toFunctor.map f = CategoryTheory.Discrete.eqToHom (_ : F X.as = F Y.as)
                @[simp]
                theorem CategoryTheory.Discrete.braidedFunctor_obj_as {M : Type u} [CommMonoid M] {N : Type u} [CommMonoid N] (F : M →* N) (X : CategoryTheory.Discrete M) :
                ((CategoryTheory.Discrete.braidedFunctor F).toMonoidalFunctor.toLaxMonoidalFunctor.toFunctor.obj X).as = F X.as
                @[simp]
                theorem CategoryTheory.Discrete.braidedFunctor_μ {M : Type u} [CommMonoid M] {N : Type u} [CommMonoid N] (F : M →* N) (X : CategoryTheory.Discrete M) (Y : CategoryTheory.Discrete M) :
                CategoryTheory.LaxMonoidalFunctor.μ (CategoryTheory.Discrete.braidedFunctor F).toMonoidalFunctor.toLaxMonoidalFunctor X Y = CategoryTheory.Discrete.eqToHom (_ : F X.as * F Y.as = F (X.as * Y.as))

                A multiplicative morphism between commutative monoids gives a braided functor between the corresponding discrete braided monoidal categories.

                Instances For
                  theorem CategoryTheory.tensor_associativity_aux (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] [CategoryTheory.BraidedCategory C] (W : C) (X : C) (Y : C) (Z : C) :
                  CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (β_ W X).hom (CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategory.tensorObj Y Z))) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator X W (CategoryTheory.MonoidalCategory.tensorObj Y Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id X) (CategoryTheory.MonoidalCategory.associator W Y Z).inv) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id X) (β_ (CategoryTheory.MonoidalCategory.tensorObj W Y) Z).hom) (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id X) (CategoryTheory.MonoidalCategory.associator Z W Y).inv)))) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategory.tensorObj W X)) (β_ Y Z).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (CategoryTheory.MonoidalCategory.tensorObj W X) Z Y).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.MonoidalCategory.associator W X Z).hom (CategoryTheory.CategoryStruct.id Y)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (β_ W (CategoryTheory.MonoidalCategory.tensorObj X Z)).hom (CategoryTheory.CategoryStruct.id Y)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.MonoidalCategory.associator X Z W).hom (CategoryTheory.CategoryStruct.id Y)) (CategoryTheory.MonoidalCategory.associator X (CategoryTheory.MonoidalCategory.tensorObj Z W) Y).hom))))

                  The tensor product functor from C × C to C as a monoidal functor.

                  Instances For
                    theorem CategoryTheory.associator_monoidal_aux (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] [CategoryTheory.BraidedCategory C] (W : C) (X : C) (Y : C) (Z : C) :
                    CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id W) (β_ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id W) (CategoryTheory.MonoidalCategory.associator Y Z X).hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator W Y (CategoryTheory.MonoidalCategory.tensorObj Z X)).inv (CategoryTheory.MonoidalCategory.tensorHom (β_ W Y).hom (CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategory.tensorObj Z X))))) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator W X (CategoryTheory.MonoidalCategory.tensorObj Y Z)).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (CategoryTheory.MonoidalCategory.tensorObj W X) Y Z).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (β_ (CategoryTheory.MonoidalCategory.tensorObj W X) Y).hom (CategoryTheory.CategoryStruct.id Z)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.MonoidalCategory.associator Y W X).inv (CategoryTheory.CategoryStruct.id Z)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (CategoryTheory.MonoidalCategory.tensorObj Y W) X Z).hom (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (CategoryTheory.MonoidalCategory.tensorObj Y W)) (β_ X Z).hom)))))