Unbundled lax monoidal functors #
Design considerations #
The essential problem I've encountered that requires unbundled functors is
having an existing (non-monoidal) functor F : C ⥤ D
between monoidal categories,
and wanting to assert that it has an extension to a lax monoidal functor.
The two options seem to be
- Construct a separate
F' : LaxMonoidalFunctor C D
, and assertF'.toFunctor ≅ F
. - Introduce unbundled functors and unbundled lax monoidal functors,
and construct
LaxMonoidal F.obj
, then constructF' := LaxMonoidalFunctor.of F.obj
.
Both have costs, but as for option 2. the cost is in library design, while in option 1. the cost is users having to carry around additional isomorphisms forever, I wanted to introduce unbundled functors.
TODO: later, we may want to do this for strong monoidal functors as well, but the immediate application, for enriched categories, only requires this notion.
An unbundled description of lax monoidal functors.
- ε : 𝟙_ D ⟶ F (𝟙_ C)
unit morphism
- μ : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (F X) (F Y) ⟶ F (CategoryTheory.MonoidalCategory.tensorObj X Y)
tensorator
- μ_natural_left : ∀ {X Y : C} (f : X ⟶ Y) (X' : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (CategoryTheory.map F f) (F X')) (CategoryTheory.LaxMonoidal.μ Y X') = CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidal.μ X X') (CategoryTheory.map F (CategoryTheory.MonoidalCategory.whiskerRight f X'))
- μ_natural_right : ∀ {X Y : C} (X' : C) (f : X ⟶ Y), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (F X') (CategoryTheory.map F f)) (CategoryTheory.LaxMonoidal.μ X' Y) = CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidal.μ X' X) (CategoryTheory.map F (CategoryTheory.MonoidalCategory.whiskerLeft X' f))
- associativity : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight (CategoryTheory.LaxMonoidal.μ X Y) (F Z)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidal.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (CategoryTheory.map F (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (F X) (F Y) (F Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (F X) (CategoryTheory.LaxMonoidal.μ Y Z)) (CategoryTheory.LaxMonoidal.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)))
associativity of the tensorator
- left_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (F X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerRight CategoryTheory.LaxMonoidal.ε (F X)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidal.μ (𝟙_ C) X) (CategoryTheory.map F (CategoryTheory.MonoidalCategory.leftUnitor X).hom))
left unitality
- right_unitality : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (F X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.whiskerLeft (F X) CategoryTheory.LaxMonoidal.ε) (CategoryTheory.CategoryStruct.comp (CategoryTheory.LaxMonoidal.μ X (𝟙_ C)) (CategoryTheory.map F (CategoryTheory.MonoidalCategory.rightUnitor X).hom))
right unitality
Instances
associativity of the tensorator
left unitality
right unitality
An unbundled description of lax monoidal functors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a bundled LaxMonoidalFunctor
from the object level function
and Functorial
and LaxMonoidal
typeclasses.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.instLaxMonoidalObj F = { ε := F.ε, μ := F.μ, μ_natural_left := ⋯, μ_natural_right := ⋯, associativity := ⋯, left_unitality := ⋯, right_unitality := ⋯ }
Equations
- One or more equations did not get rendered due to their size.