Documentation

Mathlib.CategoryTheory.Monoidal.End

Endofunctors as a monoidal category. #

We give the monoidal category structure on C ⥤ C, and show that when C itself is monoidal, it embeds via a monoidal functor into C ⥤ C.

TODO #

Can we use this to show coherence results, e.g. a cheap proof that λ_ (𝟙_ C) = ρ_ (𝟙_ C)? I suspect this is harder than is usually made out.

The category of endofunctors of any category is a monoidal category, with tensor product given by composition of functors (and horizontal composition of natural transformations).

Equations
Instances For
    @[simp]

    Tensoring on the right gives a monoidal functor from C into endofunctors of C.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem CategoryTheory.μ_naturality {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) {m : M} {n : M} {X : C} {Y : C} (f : X Y) :
      CategoryTheory.CategoryStruct.comp ((F.obj n).map ((F.obj m).map f)) ((F m n).app Y) = CategoryTheory.CategoryStruct.comp ((F m n).app X) ((F.obj (CategoryTheory.MonoidalCategory.tensorObj m n)).map f)
      theorem CategoryTheory.μ_naturality₂_assoc {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) {m : M} {n : M} {m' : M} {n' : M} (f : m m') (g : n n') (X : C) {Z : C} (h : (F.obj (CategoryTheory.MonoidalCategory.tensorObj m' n')).obj X Z) :
      CategoryTheory.CategoryStruct.comp ((F.map g).app ((F.obj m).obj X)) (CategoryTheory.CategoryStruct.comp ((F.obj n').map ((F.map f).app X)) (CategoryTheory.CategoryStruct.comp ((F m' n').app X) h)) = CategoryTheory.CategoryStruct.comp ((F m n).app X) (CategoryTheory.CategoryStruct.comp ((F.map (CategoryTheory.MonoidalCategory.tensorHom f g)).app X) h)
      theorem CategoryTheory.μ_naturality₂ {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) {m : M} {n : M} {m' : M} {n' : M} (f : m m') (g : n n') (X : C) :
      CategoryTheory.CategoryStruct.comp ((F.map g).app ((F.obj m).obj X)) (CategoryTheory.CategoryStruct.comp ((F.obj n').map ((F.map f).app X)) ((F m' n').app X)) = CategoryTheory.CategoryStruct.comp ((F m n).app X) ((F.map (CategoryTheory.MonoidalCategory.tensorHom f g)).app X)
      @[simp]
      theorem CategoryTheory.μ_naturalityₗ {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) {m : M} {n : M} {m' : M} (f : m m') (X : C) :
      CategoryTheory.CategoryStruct.comp ((F.obj n).map ((F.map f).app X)) ((F m' n).app X) = CategoryTheory.CategoryStruct.comp ((F m n).app X) ((F.map (CategoryTheory.MonoidalCategory.whiskerRight f n)).app X)
      @[simp]
      theorem CategoryTheory.μ_naturalityᵣ {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) {m : M} {n : M} {n' : M} (g : n n') (X : C) :
      CategoryTheory.CategoryStruct.comp ((F.map g).app ((F.obj m).obj X)) ((F m n').app X) = CategoryTheory.CategoryStruct.comp ((F m n).app X) ((F.map (CategoryTheory.MonoidalCategory.whiskerLeft m g)).app X)
      theorem CategoryTheory.associativity_app {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) (m₁ : M) (m₂ : M) (m₃ : M) (X : C) :
      CategoryTheory.CategoryStruct.comp ((F.obj m₃).map ((F m₁ m₂).app X)) (CategoryTheory.CategoryStruct.comp ((F (CategoryTheory.MonoidalCategory.tensorObj m₁ m₂) m₃).app X) ((F.map (CategoryTheory.MonoidalCategory.associator m₁ m₂ m₃).hom).app X)) = CategoryTheory.CategoryStruct.comp ((F m₂ m₃).app ((F.obj m₁).obj X)) ((F m₁ (CategoryTheory.MonoidalCategory.tensorObj m₂ m₃)).app X)
      @[simp]
      theorem CategoryTheory.obj_μ_app_assoc {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) (m₁ : M) (m₂ : M) (m₃ : M) (X : C) {Z : C} (h : (F.obj m₃).obj ((F.obj (CategoryTheory.MonoidalCategory.tensorObj m₁ m₂)).obj X) Z) :
      @[simp]
      theorem CategoryTheory.obj_μ_app {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) (m₁ : M) (m₂ : M) (m₃ : M) (X : C) :
      (F.obj m₃).map ((F m₁ m₂).app X) = CategoryTheory.CategoryStruct.comp ((F m₂ m₃).app ((F.obj m₁).obj X)) (CategoryTheory.CategoryStruct.comp ((F m₁ (CategoryTheory.MonoidalCategory.tensorObj m₂ m₃)).app X) (CategoryTheory.CategoryStruct.comp ((F.map (CategoryTheory.MonoidalCategory.associator m₁ m₂ m₃).inv).app X) ((CategoryTheory.MonoidalFunctor.μIso F (CategoryTheory.MonoidalCategory.tensorObj m₁ m₂) m₃).inv.app X)))
      @[simp]
      theorem CategoryTheory.obj_μ_zero_app {C : Type u} [CategoryTheory.Category.{v, u} C] {M : Type u_1} [CategoryTheory.Category.{u_2, u_1} M] [CategoryTheory.MonoidalCategory M] (F : CategoryTheory.MonoidalFunctor M (CategoryTheory.Functor C C)) (m₁ : M) (m₂ : M) (X : C) :
      CategoryTheory.CategoryStruct.comp ((F (𝟙_ M) m₂).app ((F.obj m₁).obj X)) (CategoryTheory.CategoryStruct.comp ((F m₁ (CategoryTheory.MonoidalCategory.tensorObj (𝟙_ M) m₂)).app X) (CategoryTheory.CategoryStruct.comp ((F.map (CategoryTheory.MonoidalCategory.associator m₁ (𝟙_ M) m₂).inv).app X) ((CategoryTheory.MonoidalFunctor.μIso F (CategoryTheory.MonoidalCategory.tensorObj m₁ (𝟙_ M)) m₂).inv.app X))) = CategoryTheory.CategoryStruct.comp ((F (𝟙_ M) m₂).app ((F.obj m₁).obj X)) (CategoryTheory.CategoryStruct.comp ((F.map (CategoryTheory.MonoidalCategory.leftUnitor m₂).hom).app ((F.obj m₁).obj X)) ((F.obj m₂).map ((F.map (CategoryTheory.MonoidalCategory.rightUnitor m₁).inv).app X)))

      If m ⊗ n ≅ 𝟙_M and n ⊗ m ≅ 𝟙_M (subject to some commuting constraints), then F.obj m and F.obj n forms a self-equivalence of C.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For