The category of monoids in a monoidal category. #
We define monoids in a monoidal category C and show that the category of monoids is equivalent to
the category of lax monoidal functors from the unit monoidal category to C. We also show that if
C is braided, then the category of monoids is naturally monoidal.
We use the to_additive attribute in order to generate a parallel API for additive monoids.
Simp set for monoid object tautologies #
In this file, we also provide a simp set called mon_tauto whose goal is to prove all tautologies
about morphisms from some (tensor) power of M to M, where M is a (commutative) monoid object
in a (braided) monoidal category.
Please read the documentation in Mathlib/Tactic/Attr/Register.lean for full details.
TODO #
- Check that
Mon MonCat ≌ CommMonCat, via the Eckmann-Hilton argument. (You'll have to hook up the Cartesian monoidal structure onMonCatfirst, available in https://github.com/leanprover-community/mathlib3/pull/3463) - More generally, check that
Mon (Mon C) ≌ CommMon CwhenCis braided. - Check that
Mon TopCat ≌ [bundled topological monoids]. - Check that
Mon AddCommGrpCat ≌ RingCat. (We've already gotMon (ModuleCat R) ≌ AlgCat R, inMathlib/CategoryTheory/Monoidal/Internal/Module.lean.) - Can you transport this monoidal structure to
RingCatorAlgCat R? How does it compare to the "native" one?
An additive monoid object internal to a monoidal category.
The zero morphism of an additive monoid object.
The additiion morphism of an additive monoid object.
- zero_add : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight zero X) add = (MonoidalCategoryStruct.leftUnitor X).hom
- add_zero : CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft X zero) add = (MonoidalCategoryStruct.rightUnitor X).hom
Instances
A monoid object internal to a monoidal category.
When the monoidal category is preadditive, this is also sometimes called an "algebra object".
The unit morphism of a monoid object.
The multiplication morphism of a monoid object.
- one_mul : CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight one X) mul = (MonoidalCategoryStruct.leftUnitor X).hom
- mul_one : CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft X one) mul = (MonoidalCategoryStruct.rightUnitor X).hom
Instances
The additiion morphism of an additive monoid object.
Instances For
The additiion morphism of an additive monoid object.
Instances For
The zero morphism of an additive monoid object.
Instances For
The zero morphism of an additive monoid object.
Instances For
The multiplication morphism of a monoid object.
Instances For
The multiplication morphism of a monoid object.
Instances For
The unit morphism of a monoid object.
Instances For
The unit morphism of a monoid object.
Instances For
Transfer MonObj along an isomorphism.
Instances For
Transfer AddMonObj along an isomorphism.
Instances For
The property that a morphism between additive monoid objects is an additive monoid morphism.
- zero_hom : CategoryStruct.comp AddMonObj.zero f = AddMonObj.zero
- add_hom : CategoryStruct.comp AddMonObj.add f = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom f f) AddMonObj.add
Instances
The property that a morphism between monoid objects is a monoid morphism.
- one_hom : CategoryStruct.comp MonObj.one f = MonObj.one
- mul_hom : CategoryStruct.comp MonObj.mul f = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom f f) MonObj.mul
Instances
An additive monoid object internal to a monoidal category.
- X : C
The underlying object in the ambient monoidal category
Instances For
A monoid object internal to a monoidal category.
When the monoidal category is preadditive, this is also sometimes called an "algebra object".
- X : C
The underlying object in the ambient monoidal category
Instances For
The trivial monoid object. We later show this is initial in Mon C.
Instances For
The trivial additive monoid object. We later show this is initial in AddMon C
Instances For
In this section, we prove that the category of monoids in a braided monoidal category is monoidal.
Given two monoids M and N in a braided monoidal category C,
the multiplication on the tensor product M.X ⊗ N.X is defined in the obvious way:
it is the tensor product of the multiplications on M and N,
except that the tensor factors in the source come in the wrong order,
which we fix by pre-composing with a permutation isomorphism constructed from the braiding.
(There is a subtlety here: in fact there are two ways to do these, using either the positive or negative crossing.)
A more conceptual way of understanding this definition is the following:
The braiding on C gives rise to a monoidal structure on
the tensor product functor from C × C to C.
A pair of monoids in C gives rise to a monoid in C × C,
which the tensor product functor by being monoidal takes to a monoid in C.
The permutation isomorphism appearing in the definition of
the multiplication on the tensor product of two monoids is
an instance of a more general family of isomorphisms
which together form a strength that equips the tensor product functor with a monoidal structure,
and the monoid axioms for the tensor product follow from the monoid axioms for the tensor factors
plus the properties of the strength (i.e., monoidal functor axioms).
The strength tensorμ of the tensor product functor has been defined in
Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean.
Its properties, stated as independent lemmas in that module,
are used extensively in the proofs below.
Notice that we could have followed the above plan not only conceptually
but also as a possible implementation and
could have constructed the tensor product of monoids via mapMon,
but we chose to give a more explicit definition directly in terms of tensorμ.
To complete the definition of the monoidal category structure on the category of monoids,
we need to provide definitions of associator and unitors.
The obvious candidates are the associator and unitors from C,
but we need to prove that they are monoid morphisms, i.e., compatible with unit and multiplication.
These properties translate to the monoidality of the associator and unitors
(with respect to the monoidal structures on the functors they relate),
which have also been proved in Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean.
A morphism of additive monoid objects.
The underlying morphism
- isAddMonHom_hom : IsAddMonHom self.hom
Instances For
A morphism of monoid objects.
The underlying morphism
Instances For
Construct a morphism M ⟶ N of Mon C from a map f : M ⟶ N and
compatibilities with the unit and the multiplication.
Instances For
Construct a morphism M ⟶ N of AddMon C from a map f : M ⟶ N and
compatibilities with the zero and the addition.
Instances For
The identity morphism on a monoid object.
Instances For
The identity morphism on an additive monoid object.
Instances For
Composition of morphisms of monoid objects.
Instances For
Composition of morphisms of additive monoid objects.
Instances For
The forgetful functor from monoid objects to the ambient category.
Instances For
The forgetful functor from additive monoid objects to the ambient category.
Instances For
The forgetful functor from monoid objects to the ambient category reflects isomorphisms.
Construct an isomorphism of monoid objects by giving a monoid isomorphism between the underlying objects.
Instances For
Construct an isomorphism of additive monoid objects by giving a additive monoid isomorphism between the underlying objects.
Instances For
Construct an isomorphism of monoid objects by giving an isomorphism between the underlying objects and checking compatibility with unit and multiplication only in the forward direction.
Instances For
Construct an isomorphism of additive monoid objects by giving an isomorphism between the underlying objects and checking compatibility with zero and addition only in the forward direction.
Instances For
The forgetful functor from Mon C to C is monoidal when C is monoidal.
We next show that if C is symmetric, then Mon C is braided, and indeed symmetric.
Note that Mon C is not braided in general when C is only braided.
The more interesting construction is the 2-category of monoids in C,
bimodules between the monoids, and intertwiners between the bimodules.
When C is braided, that is a monoidal 2-category.
The image of a monoid object under a lax monoidal functor is a monoid object.
Instances For
The image of an additive monoid object under a lax monoidal functor is an additive monoid object.
Instances For
A lax monoidal functor takes monoid objects to monoid objects.
That is, a lax monoidal functor F : C ⥤ D induces a functor Mon C ⥤ Mon D.
Instances For
A lax monoidal functor takes additive monoid objects to additive monoid objects.
That is, a lax monoidal functor F : C ⥤ D induces a functor AddMon C ⥤ AddMon D.
Instances For
The identity functor is also the identity on monoid objects.
Instances For
The identity functor is also the identity on additive monoid objects.
Instances For
The composition functor is also the composition on monoid objects.
Instances For
The composition functor is also the composition on additive monoid objects.
Instances For
Natural transformations between functors lift to monoid objects.
Instances For
Natural transformations between functors lift to additive monoid objects.
Instances For
Natural isomorphisms between functors lift to monoid objects.
Instances For
Natural isomorphisms between functors lift to additive monoid objects.
Instances For
Pullback a monoid object along a fully faithful oplax monoidal functor.
Instances For
Pullback an additive monoid object along a fully faithful oplax monoidal functor.
Instances For
If F : C ⥤ D is a fully faithful monoidal functor, then F.mapMon : Mon C ⥤ Mon D is fully
faithful too.
Instances For
If F : C ⥤ D is a fully faithful monoidal functor, then F.mapAddMon : AddMon C ⥤ AddMon D
is fully faithful too.
Instances For
The essential image of a fully faithful functor between cartesian-monoidal categories is the same on monoid objects as on objects.
The essential image of a fully faithful functor between cartesian-monoidal categories is the same on additive monoid objects as on objects.
mapMon is functorial in the lax monoidal functor.
Instances For
mapAddMon is functorial in the lax monoidal functor.
Instances For
An adjunction of monoidal functors lifts to an adjunction of their lifts to monoid objects.
Instances For
An adjunction of monoidal functors lifts to an adjunction of their lifts to additive monoid objects.
Instances For
An equivalence of categories lifts to an equivalence of their monoid objects.
Instances For
An equivalence of categories lifts to an equivalence of their additive monoid objects.
Instances For
Implementation of Mon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of AddMon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of Mon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of AddMon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of Mon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of AddMon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of Mon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of AddMon.equivLaxMonoidalFunctorPUnit.
Instances For
Auxiliary definition for counitIso.
Instances For
Auxiliary definition for counitIso.
Instances For
Implementation of Mon.equivLaxMonoidalFunctorPUnit.
Instances For
Implementation of AddMon.equivLaxMonoidalFunctorPUnit.
Instances For
Monoid objects in C are "just" lax monoidal functors from the trivial monoidal category to C.
Instances For
Additive monoid objects in C are "just" lax monoidal functors from
the trivial monoidal category to C.
Instances For
Predicate for an additive monoid object to be commutative.
- add_comm : CategoryStruct.comp (β_ X X).hom AddMonObj.add = AddMonObj.add
Instances
Predicate for a monoid object to be commutative.
- mul_comm : CategoryStruct.comp (β_ X X).hom MonObj.mul = MonObj.mul