(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.
Future work #
- Oplax monoidal functors.
References #
See
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.toPrefunctor.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X)
- map_comp : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), self.toPrefunctor.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (self.toPrefunctor.map f) (self.toPrefunctor.map g)
- ε : 𝟙_ D ⟶ self.toPrefunctor.obj (𝟙_ C)
unit morphism
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (self.toPrefunctor.obj X) (self.toPrefunctor.obj Y) ⟶ self.toPrefunctor.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
tensorator
- μ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (self.toPrefunctor.map f) (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X'))) (self.μ Y X') = CategoryTheory.CategoryStruct.comp (self.μ X X') (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.tensorHom f (CategoryTheory.CategoryStruct.id X')))
- μ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X')) (self.toPrefunctor.map f)) (self.μ X' Y) = CategoryTheory.CategoryStruct.comp (self.μ X' X) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id X') f))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (self.μ X Y) (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj Z))) (CategoryTheory.CategoryStruct.comp (self.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (self.toPrefunctor.obj X) (self.toPrefunctor.obj Y) (self.toPrefunctor.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X)) (self.μ Y Z)) (self.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
associativity of the tensorator
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (self.toPrefunctor.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom self.ε (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X))) (CategoryTheory.CategoryStruct.comp (self.μ (𝟙_ C) X) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (self.toPrefunctor.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X)) self.ε) (CategoryTheory.CategoryStruct.comp (self.μ X (𝟙_ C)) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
Instances For
A constructor for lax monoidal functors whose axioms are described by tensorHom
instead of
whiskerLeft
and whiskerRight
.
Equations
- CategoryTheory.LaxMonoidalFunctor.ofTensorHom F ε μ = CategoryTheory.LaxMonoidalFunctor.mk (CategoryTheory.Functor.mk { obj := F.obj, map := fun {X Y : C} => F.toPrefunctor.map }) ε μ
Instances For
A monoidal functor is a lax monoidal functor for which the tensorator and unitor as isomorphisms.
See
- obj : C → D
- map_id : ∀ (X : C), self.toPrefunctor.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X)
- map_comp : ∀ {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z), self.toPrefunctor.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp (self.toPrefunctor.map f) (self.toPrefunctor.map g)
- ε : 𝟙_ D ⟶ self.toPrefunctor.obj (𝟙_ C)
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (self.toPrefunctor.obj X) (self.toPrefunctor.obj Y) ⟶ self.toPrefunctor.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)
- μ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (self.toPrefunctor.map f) (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X'))) (self.toLaxMonoidalFunctor.μ Y X') = CategoryTheory.CategoryStruct.comp (self.toLaxMonoidalFunctor.μ X X') (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.tensorHom f (CategoryTheory.CategoryStruct.id X')))
- μ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X')) (self.toPrefunctor.map f)) (self.toLaxMonoidalFunctor.μ X' Y) = CategoryTheory.CategoryStruct.comp (self.toLaxMonoidalFunctor.μ X' X) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id X') f))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (self.toLaxMonoidalFunctor.μ X Y) (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj Z))) (CategoryTheory.CategoryStruct.comp (self.toLaxMonoidalFunctor.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (self.toPrefunctor.obj X) (self.toPrefunctor.obj Y) (self.toPrefunctor.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X)) (self.toLaxMonoidalFunctor.μ Y Z)) (self.toLaxMonoidalFunctor.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (self.toPrefunctor.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom self.ε (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X))) (CategoryTheory.CategoryStruct.comp (self.toLaxMonoidalFunctor.μ (𝟙_ C) X) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (self.toPrefunctor.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (self.toPrefunctor.obj X)) self.ε) (CategoryTheory.CategoryStruct.comp (self.toLaxMonoidalFunctor.μ X (𝟙_ C)) (self.toPrefunctor.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
- ε_isIso : CategoryTheory.IsIso self.ε
- μ_isIso : ∀ (X Y : C), CategoryTheory.IsIso (self.toLaxMonoidalFunctor.μ X Y)
Instances For
The unit morphism of a (strong) monoidal functor as an isomorphism.
Equations
Instances For
The tensorator of a (strong) monoidal functor as an isomorphism.
Equations
- CategoryTheory.MonoidalFunctor.μIso F X Y = CategoryTheory.asIso (F.toLaxMonoidalFunctor.μ X Y)
Instances For
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
- CategoryTheory.MonoidalFunctor.μNatIso F = CategoryTheory.NatIso.ofComponents fun (X : C × C) => CategoryTheory.MonoidalFunctor.μIso F X.1 X.2
Instances For
Monoidal functors commute with left tensoring up to isomorphism
Equations
Instances For
Monoidal functors commute with right tensoring up to isomorphism
Equations
Instances For
The identity monoidal functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
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 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
- CategoryTheory.LaxMonoidalFunctor.prod' F G = (CategoryTheory.MonoidalFunctor.diag C).toLaxMonoidalFunctor ⊗⋙ CategoryTheory.LaxMonoidalFunctor.prod F G
Instances For
The composition of two monoidal functors is again monoidal.
Equations
- F ⊗⋙ G = let src := F.toLaxMonoidalFunctor ⊗⋙ G.toLaxMonoidalFunctor; CategoryTheory.MonoidalFunctor.mk src
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
- CategoryTheory.MonoidalFunctor.prod F G = let src := CategoryTheory.LaxMonoidalFunctor.prod F.toLaxMonoidalFunctor G.toLaxMonoidalFunctor; CategoryTheory.MonoidalFunctor.mk src
Instances For
The cartesian product of two monoidal functors starting from the same monoidal category C
is monoidal.
Equations
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
If a monoidal functor F
is an equivalence of categories then its inverse is also monoidal.
Equations
- CategoryTheory.monoidalInverse F = CategoryTheory.MonoidalFunctor.mk (CategoryTheory.monoidalAdjoint F (CategoryTheory.Functor.asEquivalence F.toLaxMonoidalFunctor.1).toAdjunction)