(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. This is implemented as a typeclassF.LaxMonoidal.
Similarly, we define the typeclass F.OplaxMonoidal. For these oplax monoidal functors,
we have similar data η and δ, but with morphisms in the opposite direction.
A monoidal functor (F.Monoidal) is defined here as the combination of F.LaxMonoidal
and F.OplaxMonoidal, with the additional conditions that ε/η and μ/δ are
inverse isomorphisms.
We show that the composition of (lax) monoidal functors gives a (lax) monoidal functor.
See Mathlib/CategoryTheory/Monoidal/NaturalTransformation.lean for monoidal natural
transformations.
We show in Mathlib.CategoryTheory.Monoidal.Mon_ that lax monoidal functors take monoid objects
to monoid objects.
References #
A functor F : C ⥤ D between monoidal categories is lax monoidal if it is
equipped with morphisms ε : 𝟙_ D ⟶ F.obj (𝟙_ C) and μ X Y : F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y),
satisfying the appropriate coherences.
the unit morphism of a lax monoidal functor
- μ (X Y : C) : MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y) ⟶ F.obj (MonoidalCategoryStruct.tensorObj X Y)
the tensorator of a lax monoidal functor
- μ_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) (μ F Y X') = CategoryStruct.comp (μ F X X') (F.map (MonoidalCategoryStruct.whiskerRight f X'))
- μ_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) (μ F X' Y) = CategoryStruct.comp (μ F X' X) (F.map (MonoidalCategoryStruct.whiskerLeft X' f))
- associativity (X Y Z : C) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (μ F X Y) (F.obj Z)) (CategoryStruct.comp (μ F (MonoidalCategoryStruct.tensorObj X Y) Z) (F.map (MonoidalCategoryStruct.associator X Y Z).hom)) = CategoryStruct.comp (MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X) (μ F Y Z)) (μ F X (MonoidalCategoryStruct.tensorObj Y Z)))
associativity of the tensorator
- left_unitality (X : C) : (MonoidalCategoryStruct.leftUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (ε F) (F.obj X)) (CategoryStruct.comp (μ F (MonoidalCategoryStruct.tensorUnit C) X) (F.map (MonoidalCategoryStruct.leftUnitor X).hom))
- right_unitality (X : C) : (MonoidalCategoryStruct.rightUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X) (ε F)) (CategoryStruct.comp (μ F X (MonoidalCategoryStruct.tensorUnit C)) (F.map (MonoidalCategoryStruct.rightUnitor X).hom))
Instances
associativity of the tensorator
A constructor for lax monoidal functors whose axioms are described by tensorHom instead of
whiskerLeft and whiskerRight.
Instances For
A functor F : C ⥤ D between monoidal categories is oplax monoidal if it is
equipped with morphisms η : F.obj (𝟙_ C) ⟶ 𝟙 _D and δ X Y : F.obj (X ⊗ Y) ⟶ F.obj X ⊗ F.obj Y,
satisfying the appropriate coherences.
the counit morphism of a lax monoidal functor
- δ (X Y : C) : F.obj (MonoidalCategoryStruct.tensorObj X Y) ⟶ MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y)
the cotensorator of an oplax monoidal functor
- δ_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryStruct.comp (δ F X X') (MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) = CategoryStruct.comp (F.map (MonoidalCategoryStruct.whiskerRight f X')) (δ F Y X')
- δ_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryStruct.comp (δ F X' X) (MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) = CategoryStruct.comp (F.map (MonoidalCategoryStruct.whiskerLeft X' f)) (δ F X' Y)
- oplax_associativity (X Y Z : C) : CategoryStruct.comp (δ F (MonoidalCategoryStruct.tensorObj X Y) Z) (CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (δ F X Y) (F.obj Z)) (MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom) = CategoryStruct.comp (F.map (MonoidalCategoryStruct.associator X Y Z).hom) (CategoryStruct.comp (δ F X (MonoidalCategoryStruct.tensorObj Y Z)) (MonoidalCategoryStruct.whiskerLeft (F.obj X) (δ F Y Z)))
associativity of the tensorator
- oplax_left_unitality (X : C) : (MonoidalCategoryStruct.leftUnitor (F.obj X)).inv = CategoryStruct.comp (F.map (MonoidalCategoryStruct.leftUnitor X).inv) (CategoryStruct.comp (δ F (MonoidalCategoryStruct.tensorUnit C) X) (MonoidalCategoryStruct.whiskerRight (η F) (F.obj X)))
- oplax_right_unitality (X : C) : (MonoidalCategoryStruct.rightUnitor (F.obj X)).inv = CategoryStruct.comp (F.map (MonoidalCategoryStruct.rightUnitor X).inv) (CategoryStruct.comp (δ F X (MonoidalCategoryStruct.tensorUnit C)) (MonoidalCategoryStruct.whiskerLeft (F.obj X) (η F)))
Instances
Alias of CategoryTheory.Functor.OplaxMonoidal.oplax_associativity.
associativity of the tensorator
Alias of CategoryTheory.Functor.OplaxMonoidal.oplax_left_unitality.
Alias of CategoryTheory.Functor.OplaxMonoidal.oplax_right_unitality.
A functor between monoidal categories is monoidal if it is lax and oplax monoidals, and both data give inverse isomorphisms.
- μ (X Y : C) : MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y) ⟶ F.obj (MonoidalCategoryStruct.tensorObj X Y)
- μ_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) (μ F Y X') = CategoryStruct.comp (μ F X X') (F.map (MonoidalCategoryStruct.whiskerRight f X'))
- μ_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) (μ F X' Y) = CategoryStruct.comp (μ F X' X) (F.map (MonoidalCategoryStruct.whiskerLeft X' f))
- associativity (X Y Z : C) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (μ F X Y) (F.obj Z)) (CategoryStruct.comp (μ F (MonoidalCategoryStruct.tensorObj X Y) Z) (F.map (MonoidalCategoryStruct.associator X Y Z).hom)) = CategoryStruct.comp (MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X) (μ F Y Z)) (μ F X (MonoidalCategoryStruct.tensorObj Y Z)))
- left_unitality (X : C) : (MonoidalCategoryStruct.leftUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (ε F) (F.obj X)) (CategoryStruct.comp (μ F (MonoidalCategoryStruct.tensorUnit C) X) (F.map (MonoidalCategoryStruct.leftUnitor X).hom))
- right_unitality (X : C) : (MonoidalCategoryStruct.rightUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X) (ε F)) (CategoryStruct.comp (μ F X (MonoidalCategoryStruct.tensorUnit C)) (F.map (MonoidalCategoryStruct.rightUnitor X).hom))
- δ (X Y : C) : F.obj (MonoidalCategoryStruct.tensorObj X Y) ⟶ MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y)
- δ_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryStruct.comp (δ F X X') (MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) = CategoryStruct.comp (F.map (MonoidalCategoryStruct.whiskerRight f X')) (δ F Y X')
- δ_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryStruct.comp (δ F X' X) (MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) = CategoryStruct.comp (F.map (MonoidalCategoryStruct.whiskerLeft X' f)) (δ F X' Y)
- oplax_associativity (X Y Z : C) : CategoryStruct.comp (δ F (MonoidalCategoryStruct.tensorObj X Y) Z) (CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (δ F X Y) (F.obj Z)) (MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom) = CategoryStruct.comp (F.map (MonoidalCategoryStruct.associator X Y Z).hom) (CategoryStruct.comp (δ F X (MonoidalCategoryStruct.tensorObj Y Z)) (MonoidalCategoryStruct.whiskerLeft (F.obj X) (δ F Y Z)))
- oplax_left_unitality (X : C) : (MonoidalCategoryStruct.leftUnitor (F.obj X)).inv = CategoryStruct.comp (F.map (MonoidalCategoryStruct.leftUnitor X).inv) (CategoryStruct.comp (δ F (MonoidalCategoryStruct.tensorUnit C) X) (MonoidalCategoryStruct.whiskerRight (η F) (F.obj X)))
- oplax_right_unitality (X : C) : (MonoidalCategoryStruct.rightUnitor (F.obj X)).inv = CategoryStruct.comp (F.map (MonoidalCategoryStruct.rightUnitor X).inv) (CategoryStruct.comp (δ F X (MonoidalCategoryStruct.tensorUnit C)) (MonoidalCategoryStruct.whiskerLeft (F.obj X) (η F)))
- η_ε : CategoryStruct.comp (OplaxMonoidal.η F) (LaxMonoidal.ε F) = CategoryStruct.id (F.obj (MonoidalCategoryStruct.tensorUnit C))
- μ_δ (X Y : C) : CategoryStruct.comp (LaxMonoidal.μ F X Y) (OplaxMonoidal.δ F X Y) = CategoryStruct.id (MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y))
- δ_μ (X Y : C) : CategoryStruct.comp (OplaxMonoidal.δ F X Y) (LaxMonoidal.μ F X Y) = CategoryStruct.id (F.obj (MonoidalCategoryStruct.tensorObj X Y))
Instances
The isomorphism 𝟙_ D ≅ F.obj (𝟙_ C) when F is a monoidal functor.
Instances For
The isomorphism F.obj X ⊗ F.obj Y ≅ F.obj (X ⊗ Y) when F is a monoidal functor.
Instances For
The tensorator as a natural isomorphism.
Instances For
Monoidal functors commute with left tensoring up to isomorphism
Instances For
Monoidal functors commute with right tensoring up to isomorphism
Instances For
Structure which is a helper in order to show that a functor is monoidal. It
consists of isomorphisms εIso and μIso such that the morphisms .hom induced
by these isomorphisms satisfy the axioms of lax monoidal functors.
unit morphism
- μIso (X Y : C) : MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y) ≅ F.obj (MonoidalCategoryStruct.tensorObj X Y)
tensorator
- μIso_hom_natural_left {X Y : C} (f : X ⟶ Y) (X' : C) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (F.map f) (F.obj X')) (self.μIso Y X').hom = CategoryStruct.comp (self.μIso X X').hom (F.map (MonoidalCategoryStruct.whiskerRight f X'))
- μIso_hom_natural_right {X Y : C} (X' : C) (f : X ⟶ Y) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X') (F.map f)) (self.μIso X' Y).hom = CategoryStruct.comp (self.μIso X' X).hom (F.map (MonoidalCategoryStruct.whiskerLeft X' f))
- associativity (X Y Z : C) : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (self.μIso X Y).hom (F.obj Z)) (CategoryStruct.comp (self.μIso (MonoidalCategoryStruct.tensorObj X Y) Z).hom (F.map (MonoidalCategoryStruct.associator X Y Z).hom)) = CategoryStruct.comp (MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X) (self.μIso Y Z).hom) (self.μIso X (MonoidalCategoryStruct.tensorObj Y Z)).hom)
associativity of the tensorator
- left_unitality (X : C) : (MonoidalCategoryStruct.leftUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight self.εIso.hom (F.obj X)) (CategoryStruct.comp (self.μIso (MonoidalCategoryStruct.tensorUnit C) X).hom (F.map (MonoidalCategoryStruct.leftUnitor X).hom))
- right_unitality (X : C) : (MonoidalCategoryStruct.rightUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (F.obj X) self.εIso.hom) (CategoryStruct.comp (self.μIso X (MonoidalCategoryStruct.tensorUnit C)).hom (F.map (MonoidalCategoryStruct.rightUnitor X).hom))
Instances For
associativity of the tensorator
Alternative constructor for CoreMonoidal, for which the axioms are stated
in terms on the inverses of εIso and μIso.
Instances For
The lax monoidal functor structure induced by a Functor.CoreMonoidal structure.
Instances For
The oplax monoidal functor structure induced by a Functor.CoreMonoidal structure.
Instances For
The monoidal functor structure induced by a Functor.CoreMonoidal structure.
Instances For
The Functor.CoreMonoidal structure given by a lax monoidal functor such
that ε and μ are isomorphisms.
Instances For
The Functor.CoreMonoidal structure given by an oplax monoidal functor such
that η and δ are isomorphisms.
Instances For
The Functor.Monoidal structure given by a lax monoidal functor such
that ε and μ are isomorphisms.
Instances For
The Functor.Monoidal structure given by an oplax monoidal functor such
that η and δ are isomorphisms.
Instances For
The functor C ⥤ D × E obtained from two lax monoidal functors is lax monoidal.
The functor C ⥤ D × E obtained from two oplax monoidal functors is oplax monoidal.
The functor C ⥤ D × E obtained from two monoidal functors is monoidal.
The right adjoint of an oplax monoidal functor is lax monoidal.
Instances For
When adj : F ⊣ G is an adjunction, with F oplax monoidal and G lax-monoidal,
this typeclass expresses compatibilities between the adjunction and the (op)lax
monoidal structures.
- leftAdjoint_ε : Functor.LaxMonoidal.ε G = CategoryStruct.comp (adj.unit.app (MonoidalCategoryStruct.tensorUnit C)) (G.map (Functor.OplaxMonoidal.η F))
- leftAdjoint_μ (X Y : D) : Functor.LaxMonoidal.μ G X Y = CategoryStruct.comp (adj.unit.app (MonoidalCategoryStruct.tensorObj (G.obj X) (G.obj Y))) (G.map (CategoryStruct.comp (Functor.OplaxMonoidal.δ F (G.obj X) (G.obj Y)) (MonoidalCategoryStruct.tensorHom (adj.counit.app X) (adj.counit.app Y))))
Instances
The left adjoint of a lax monoidal functor is oplax monoidal.
Instances For
If F ⊣ G is an adjunction, the G is lax monoidal iff F is oplax monoidal.
It is advisable to use Adjunction.leftAdjointOplaxMonoidal and
Adjunction.rightAdjointLaxMonoidal, because compatibilities between
the oplax monoidal left adjoint and the lax monoidal right adjoint
(Adjunction.IsMonoidal) have been stated for these definitions.
Instances For
If a monoidal functor F is an equivalence of categories then its inverse is also monoidal.
Instances For
An equivalence of categories involving monoidal functors is monoidal if the underlying adjunction satisfies certain compatibilities with respect to the monoidal functor data.
Instances For
The obvious auto-equivalence of a monoidal category is monoidal.
The inverse of a monoidal category equivalence is also a monoidal category equivalence.
The composition of two monoidal category equivalences is monoidal.
Bundled version of lax monoidal functors. This type is equipped with a category
structure in CategoryTheory.Monoidal.NaturalTransformation.
- obj : C → D
- map_comp {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) : self.map (CategoryStruct.comp f g) = CategoryStruct.comp (self.map f) (self.map g)
- laxMonoidal : self.LaxMonoidal
Instances For
Constructor for LaxMonoidalFunctor C D.
Instances For
Auxiliary definition for Functor.Monoidal.transport
Instances For
Transport the structure of a monoidal functor along a natural isomorphism of functors.
Instances For
Given a functor F and an equivalence of categories e such that e.inverse and e.functor ⋙ F
are monoidal functors, F is monoidal as well.
Instances For
Given a functor F and an equivalence of categories e such that e.functor and e.inverse ⋙ F
are monoidal functors, F is monoidal as well.
Instances For
Given a functor F and an equivalence of categories e such that e.functor and F ⋙ e.inverse
are monoidal functors, F is monoidal as well.
Instances For
Given a functor F and an equivalence of categories e such that e.inverse and F ⋙ e.functor
are monoidal functors, F is monoidal as well.