(Lax) monoidal functors #
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 CategoryTheory.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 CategoryTheory.Monoidal.NaturalTransformation
for monoidal natural transformations.
We show in CategoryTheory.Monoidal.Mon_
that lax monoidal functors take monoid objects
to monoid objects.
References #
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.
- obj : C → D
- map_id : ∀ (X : C), self.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (self.obj X)
- map_comp : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), self.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (self.map f) (self.map g)
- ε : 𝟙_ D ⟶ self.obj (𝟙_ C)
unit morphism
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (self.obj X) (self.obj Y) ⟶ self.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
tensorator
- μ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.map f) (self.obj X')) (self.μ Y X') = CategoryTheory.CategoryStruct.comp (self.μ X X') (self.map (CategoryTheory.MonoidalCategory.whiskerRight f X'))
- μ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X') (self.map f)) (self.μ X' Y) = CategoryTheory.CategoryStruct.comp (self.μ X' X) (self.map (CategoryTheory.MonoidalCategory.whiskerLeft X' f))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.μ X Y) (self.obj Z)) (CategoryTheory.CategoryStruct.comp (self.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (self.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (self.obj X) (self.obj Y) (self.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) (self.μ Y Z)) (self.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
associativity of the tensorator
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight self.ε (self.obj X)) (CategoryTheory.CategoryStruct.comp (self.μ (𝟙_ C) X) (self.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) self.ε) (CategoryTheory.CategoryStruct.comp (self.μ X (𝟙_ C)) (self.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
Instances For
associativity of the tensorator
A constructor for lax monoidal functors whose axioms are described by tensorHom
instead of
whiskerLeft
and whiskerRight
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A oplax monoidal functor is a functor F : C ⥤ D
between monoidal categories,
equipped with morphisms η : F.obj (𝟙_ C) ⟶ 𝟙 _D
and δ X Y : F.obj (X ⊗ Y) ⟶ F.obj X ⊗ F.obj Y
,
satisfying the appropriate coherences.
- obj : C → D
- map_id : ∀ (X : C), self.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (self.obj X)
- map_comp : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), self.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (self.map f) (self.map g)
- η : self.obj (𝟙_ C) ⟶ 𝟙_ D
counit morphism
- δ : (X Y : C) → self.obj (CategoryTheory.MonoidalCategory.tensorObj X Y) ⟶ CategoryTheory.MonoidalCategory.tensorObj (self.obj X) (self.obj Y)
cotensorator
- δ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (self.δ X X') (CategoryTheory.MonoidalCategory.whiskerRight (self.map f) (self.obj X')) = CategoryTheory.CategoryStruct.comp (self.map (CategoryTheory.MonoidalCategory.whiskerRight f X')) (self.δ Y X')
- δ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (self.δ X' X) (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X') (self.map f)) = CategoryTheory.CategoryStruct.comp (self.map (CategoryTheory.MonoidalCategory.whiskerLeft X' f)) (self.δ X' Y)
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (self.δ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.δ X Y) (self.obj Z)) (CategoryTheory.MonoidalCategory.associator (self.obj X) (self.obj Y) (self.obj Z)).hom) = CategoryTheory.CategoryStruct.comp (self.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom) (CategoryTheory.CategoryStruct.comp (self.δ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)) (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) (self.δ Y Z)))
associativity of the tensorator
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (self.obj X)).inv = CategoryTheory.CategoryStruct.comp (self.map (CategoryTheory.MonoidalCategory.leftUnitor X).inv) (CategoryTheory.CategoryStruct.comp (self.δ (𝟙_ C) X) (CategoryTheory.MonoidalCategory.whiskerRight self.η (self.obj X)))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (self.obj X)).inv = CategoryTheory.CategoryStruct.comp (self.map (CategoryTheory.MonoidalCategory.rightUnitor X).inv) (CategoryTheory.CategoryStruct.comp (self.δ X (𝟙_ C)) (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) self.η))
Instances For
associativity of the tensorator
A monoidal functor is a lax monoidal functor for which the tensorator and unitor are isomorphisms.
See https://stacks.math.columbia.edu/tag/0FFL.
- obj : C → D
- map_id : ∀ (X : C), self.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (self.obj X)
- map_comp : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), self.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (self.map f) (self.map g)
- ε : 𝟙_ D ⟶ self.obj (𝟙_ C)
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (self.obj X) (self.obj Y) ⟶ self.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
- μ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.map f) (self.obj X')) (self.μ Y X') = CategoryTheory.CategoryStruct.comp (self.μ X X') (self.map (CategoryTheory.MonoidalCategory.whiskerRight f X'))
- μ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X') (self.map f)) (self.μ X' Y) = CategoryTheory.CategoryStruct.comp (self.μ X' X) (self.map (CategoryTheory.MonoidalCategory.whiskerLeft X' f))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (self.μ X Y) (self.obj Z)) (CategoryTheory.CategoryStruct.comp (self.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (self.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (self.obj X) (self.obj Y) (self.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) (self.μ Y Z)) (self.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight self.ε (self.obj X)) (CategoryTheory.CategoryStruct.comp (self.μ (𝟙_ C) X) (self.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (self.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) self.ε) (CategoryTheory.CategoryStruct.comp (self.μ X (𝟙_ C)) (self.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
- ε_isIso : CategoryTheory.IsIso self.ε
- μ_isIso : ∀ (X Y : C), CategoryTheory.IsIso (self.μ X Y)
Instances For
The unit morphism of a (strong) monoidal functor as an isomorphism.
Equations
- F.εIso = CategoryTheory.asIso F.ε
Instances For
The tensorator of a (strong) monoidal functor as an isomorphism.
Equations
- F.μIso X Y = CategoryTheory.asIso (F.μ X Y)
Instances For
The underlying oplax monoidal functor of a (strong) monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The identity lax monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.LaxMonoidalFunctor.instInhabited C = { default := CategoryTheory.LaxMonoidalFunctor.id C }
The identity lax monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The tensorator as a natural isomorphism.
Equations
- F.μNatIso = CategoryTheory.NatIso.ofComponents (fun (X : C × C) => F.μIso X.1 X.2) ⋯
Instances For
Monoidal functors commute with left tensoring up to isomorphism
Equations
- F.commTensorLeft X = CategoryTheory.NatIso.ofComponents (fun (Y : C) => F.μIso X Y) ⋯
Instances For
Monoidal functors commute with right tensoring up to isomorphism
Equations
- F.commTensorRight X = CategoryTheory.NatIso.ofComponents (fun (Y : C) => F.μIso Y X) ⋯
Instances For
The identity monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.MonoidalFunctor.instInhabited C = { default := CategoryTheory.MonoidalFunctor.id C }
The composition of two lax monoidal functors is again lax monoidal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The composition of two lax monoidal functors is again lax monoidal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The composition of two oplax monoidal functors is again oplax monoidal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The composition of two oplax monoidal functors is again oplax monoidal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cartesian product of two lax monoidal functors is lax monoidal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The diagonal functor as a monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cartesian product of two lax monoidal functors starting from the same monoidal category C
is lax monoidal.
Equations
- F.prod' G = (CategoryTheory.MonoidalFunctor.diag C).toLaxMonoidalFunctor ⊗⋙ F.prod G
Instances For
The composition of two monoidal functors is again monoidal.
Equations
Instances For
The composition of two monoidal functors is again monoidal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cartesian product of two monoidal functors is monoidal.
Equations
- F.prod G = let __src := F.prod G.toLaxMonoidalFunctor; { toLaxMonoidalFunctor := __src, ε_isIso := ⋯, μ_isIso := ⋯ }
Instances For
The cartesian product of two monoidal functors starting from the same monoidal category C
is monoidal.
Equations
- F.prod' G = CategoryTheory.MonoidalFunctor.diag C ⊗⋙ F.prod G
Instances For
If we have a right adjoint functor G
to a monoidal functor F
, then G
has a lax monoidal
structure as well.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If a monoidal functor F
is an equivalence of categories then its inverse is also monoidal.
Equations
- CategoryTheory.monoidalInverse F h = { toLaxMonoidalFunctor := CategoryTheory.monoidalAdjoint F h, ε_isIso := ⋯, μ_isIso := ⋯ }