Endofunctors as a monoidal category. #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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
- category_theory.endofunctor_monoidal_category C = {tensor_obj := λ (F G : C ⥤ C), F ⋙ G, tensor_hom := λ (F G F' G' : C ⥤ C) (α : F ⟶ G) (β : F' ⟶ G'), α ◫ β, tensor_id' := _, tensor_comp' := _, tensor_unit := 𝟭 C _inst_1, associator := λ (F G H : C ⥤ C), F.associator G H, associator_naturality' := _, left_unitor := λ (F : C ⥤ C), F.left_unitor, left_unitor_naturality' := _, right_unitor := λ (F : C ⥤ C), F.right_unitor, right_unitor_naturality' := _, pentagon' := _, triangle' := _}
Tensoring on the right gives a monoidal functor from C
into endofunctors of C
.
Equations
- category_theory.tensoring_right_monoidal C = {to_lax_monoidal_functor := {to_functor := {obj := (category_theory.monoidal_category.tensoring_right C).obj, map := (category_theory.monoidal_category.tensoring_right C).map, map_id' := _, map_comp' := _}, ε := (category_theory.monoidal_category.right_unitor_nat_iso C).inv, μ := λ (X Y : C), {app := λ (Z : C), (α_ Z X Y).hom, naturality' := _}, μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}, ε_is_iso := _, μ_is_iso := _}
If m ⊗ n ≅ 𝟙_M
, then F.obj m
is a left inverse of F.obj n
.
Equations
- category_theory.unit_of_tensor_iso_unit F m n h = F.μ_iso m n ≪≫ F.to_lax_monoidal_functor.to_functor.map_iso h ≪≫ F.ε_iso.symm
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
- category_theory.equiv_of_tensor_iso_unit F m n h₁ h₂ H = {functor := F.to_lax_monoidal_functor.to_functor.obj m, inverse := F.to_lax_monoidal_functor.to_functor.obj n, unit_iso := (category_theory.unit_of_tensor_iso_unit F m n h₁).symm, counit_iso := category_theory.unit_of_tensor_iso_unit F n m h₂, functor_unit_iso_comp' := _}