(Lax) monoidal functors #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
A lax monoidal functor F
between monoidal categories C
and D
is a functor between the underlying categories equipped with morphisms
ε : 𝟙_ D ⟶ F.obj (𝟙_ C)
(called the unit morphism)μ X Y : (F.obj X) ⊗ (F.obj Y) ⟶ F.obj (X ⊗ Y)
(called the tensorator, or strength). satisfying various axioms.
A monoidal functor is a lax monoidal functor for which ε
and μ
are isomorphisms.
We show that the composition of (lax) monoidal functors gives a (lax) monoidal functor.
See also category_theory.monoidal.functorial
for a typeclass decorating an object-level
function with the additional data of a monoidal functor.
This is useful when stating that a pre-existing functor is monoidal.
See category_theory.monoidal.natural_transformation
for monoidal natural transformations.
We show in category_theory.monoidal.Mon_
that lax monoidal functors take monoid objects
to monoid objects.
Future work #
- Oplax monoidal functors.
References #
- to_functor : C ⥤ D
- ε : 𝟙_ D ⟶ self.to_functor.obj (𝟙_ C)
- μ : Π (X Y : C), self.to_functor.obj X ⊗ self.to_functor.obj Y ⟶ self.to_functor.obj (X ⊗ Y)
- μ_natural' : (∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), (self.to_functor.map f ⊗ self.to_functor.map g) ≫ self.μ Y Y' = self.μ X X' ≫ self.to_functor.map (f ⊗ g)) . "obviously"
- associativity' : (∀ (X Y Z : C), (self.μ X Y ⊗ 𝟙 (self.to_functor.obj Z)) ≫ self.μ (X ⊗ Y) Z ≫ self.to_functor.map (α_ X Y Z).hom = (α_ (self.to_functor.obj X) (self.to_functor.obj Y) (self.to_functor.obj Z)).hom ≫ (𝟙 (self.to_functor.obj X) ⊗ self.μ Y Z) ≫ self.μ X (Y ⊗ Z)) . "obviously"
- left_unitality' : (∀ (X : C), (λ_ (self.to_functor.obj X)).hom = (self.ε ⊗ 𝟙 (self.to_functor.obj X)) ≫ self.μ (𝟙_ C) X ≫ self.to_functor.map (λ_ X).hom) . "obviously"
- right_unitality' : (∀ (X : C), (ρ_ (self.to_functor.obj X)).hom = (𝟙 (self.to_functor.obj X) ⊗ self.ε) ≫ self.μ X (𝟙_ C) ≫ self.to_functor.map (ρ_ X).hom) . "obviously"
A lax monoidal functor is a functor F : C ⥤ D
between monoidal categories,
equipped with morphisms ε : 𝟙 _D ⟶ F.obj (𝟙_ C)
and μ X Y : F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y)
,
satisfying the appropriate coherences.
Instances for category_theory.lax_monoidal_functor
- category_theory.lax_monoidal_functor.has_sizeof_inst
- category_theory.lax_monoidal_functor.inhabited
- category_theory.monoidal_nat_trans.category_lax_monoidal_functor
- to_lax_monoidal_functor : category_theory.lax_monoidal_functor C D
- ε_is_iso : category_theory.is_iso self.to_lax_monoidal_functor.ε . "apply_instance"
- μ_is_iso : (∀ (X Y : C), category_theory.is_iso (self.to_lax_monoidal_functor.μ X Y)) . "apply_instance"
A monoidal functor is a lax monoidal functor for which the tensorator and unitor as isomorphisms.
See https://stacks.math.columbia.edu/tag/0FFL.
Instances for category_theory.monoidal_functor
- category_theory.monoidal_functor.has_sizeof_inst
- category_theory.monoidal_functor.inhabited
- category_theory.monoidal_nat_trans.category_monoidal_functor
The unit morphism of a (strong) monoidal functor as an isomorphism.
Equations
The tensorator of a (strong) monoidal functor as an isomorphism.
Equations
- F.μ_iso X Y = category_theory.as_iso (F.to_lax_monoidal_functor.μ X Y)
The identity lax monoidal functor.
Equations
- category_theory.lax_monoidal_functor.id C = {to_functor := {obj := (𝟭 C).obj, map := (𝟭 C).map, map_id' := _, map_comp' := _}, ε := 𝟙 (𝟙_ C), μ := λ (X Y : C), 𝟙 ({obj := (𝟭 C).obj, map := (𝟭 C).map, map_id' := _, map_comp' := _}.obj X ⊗ {obj := (𝟭 C).obj, map := (𝟭 C).map, map_id' := _, map_comp' := _}.obj Y), μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}
Equations
The tensorator as a natural isomorphism.
Monoidal functors commute with left tensoring up to isomorphism
Equations
- F.comm_tensor_left X = category_theory.nat_iso.of_components (λ (Y : C), F.μ_iso X Y) _
Monoidal functors commute with right tensoring up to isomorphism
Equations
- F.comm_tensor_right X = category_theory.nat_iso.of_components (λ (Y : C), F.μ_iso Y X) _
The identity monoidal functor.
Equations
- category_theory.monoidal_functor.id C = {to_lax_monoidal_functor := {to_functor := {obj := (𝟭 C).obj, map := (𝟭 C).map, map_id' := _, map_comp' := _}, ε := 𝟙 (𝟙_ C), μ := λ (X Y : C), 𝟙 ({obj := (𝟭 C).obj, map := (𝟭 C).map, map_id' := _, map_comp' := _}.obj X ⊗ {obj := (𝟭 C).obj, map := (𝟭 C).map, map_id' := _, map_comp' := _}.obj Y), μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}, ε_is_iso := _, μ_is_iso := _}
Equations
The composition of two lax monoidal functors is again lax monoidal.
Equations
- F ⊗⋙ G = {to_functor := {obj := (F.to_functor ⋙ G.to_functor).obj, map := (F.to_functor ⋙ G.to_functor).map, map_id' := _, map_comp' := _}, ε := G.ε ≫ G.to_functor.map F.ε, μ := λ (X Y : C), G.μ (F.to_functor.obj X) (F.to_functor.obj Y) ≫ G.to_functor.map (F.μ X Y), μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}
The cartesian product of two lax monoidal functors is lax monoidal.
Equations
- F.prod G = {to_functor := {obj := (F.to_functor.prod G.to_functor).obj, map := (F.to_functor.prod G.to_functor).map, map_id' := _, map_comp' := _}, ε := (F.ε, G.ε), μ := λ (X Y : B × D), (F.μ X.fst Y.fst, G.μ X.snd Y.snd), μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}
The diagonal functor as a monoidal functor.
Equations
- category_theory.monoidal_functor.diag C = {to_lax_monoidal_functor := {to_functor := {obj := (category_theory.functor.diag C).obj, map := (category_theory.functor.diag C).map, map_id' := _, map_comp' := _}, ε := 𝟙 (𝟙_ (C × C)), μ := λ (X Y : C), 𝟙 ({obj := (category_theory.functor.diag C).obj, map := (category_theory.functor.diag C).map, map_id' := _, map_comp' := _}.obj X ⊗ {obj := (category_theory.functor.diag C).obj, map := (category_theory.functor.diag C).map, map_id' := _, map_comp' := _}.obj Y), μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}, ε_is_iso := _, μ_is_iso := _}
The cartesian product of two lax monoidal functors starting from the same monoidal category C
is lax monoidal.
Equations
The composition of two monoidal functors is again monoidal.
Equations
- F ⊗⋙ G = {to_lax_monoidal_functor := {to_functor := (F.to_lax_monoidal_functor ⊗⋙ G.to_lax_monoidal_functor).to_functor, ε := (F.to_lax_monoidal_functor ⊗⋙ G.to_lax_monoidal_functor).ε, μ := (F.to_lax_monoidal_functor ⊗⋙ G.to_lax_monoidal_functor).μ, μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}, ε_is_iso := _, μ_is_iso := _}
The cartesian product of two monoidal functors is monoidal.
Equations
- F.prod G = {to_lax_monoidal_functor := {to_functor := (F.to_lax_monoidal_functor.prod G.to_lax_monoidal_functor).to_functor, ε := (F.to_lax_monoidal_functor.prod G.to_lax_monoidal_functor).ε, μ := (F.to_lax_monoidal_functor.prod G.to_lax_monoidal_functor).μ, μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}, ε_is_iso := _, μ_is_iso := _}
The cartesian product of two monoidal functors starting from the same monoidal category C
is monoidal.
Equations
- F.prod' G = category_theory.monoidal_functor.diag C ⊗⋙ F.prod G
If we have a right adjoint functor G
to a monoidal functor F
, then G
has a lax monoidal
structure as well.
Equations
- category_theory.monoidal_adjoint F h = {to_functor := G, ε := ⇑(h.hom_equiv (𝟙_ C) (𝟙_ D)) (category_theory.inv F.to_lax_monoidal_functor.ε), μ := λ (X Y : D), ⇑(h.hom_equiv (G.obj X ⊗ G.obj Y) (X ⊗ Y)) (category_theory.inv (F.to_lax_monoidal_functor.μ (G.obj X) (G.obj Y)) ≫ (h.counit.app X ⊗ h.counit.app Y)), μ_natural' := _, associativity' := _, left_unitality' := _, right_unitality' := _}
If a monoidal functor F
is an equivalence of categories then its inverse is also monoidal.