The equivalence between Monad C
and Mon_ (C ⥤ C)
. #
A monad "is just" a monoid in the category of endofunctors.
Definitions/Theorems #
toMon
associates a monoid object inC ⥤ C
to any monad onC
.monadToMon
is the functorial version oftoMon
.ofMon
associates a monad onC
to any monoid object inC ⥤ C
.monadMonEquiv
is the equivalence betweenMonad C
andMon_ (C ⥤ C)
.
@[simp]
theorem
CategoryTheory.Monad.toMon_one
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : CategoryTheory.Monad C)
:
@[simp]
theorem
CategoryTheory.Monad.toMon_mul
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : CategoryTheory.Monad C)
:
@[simp]
theorem
CategoryTheory.Monad.toMon_X
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : CategoryTheory.Monad C)
:
(CategoryTheory.Monad.toMon M).X = M.toFunctor
def
CategoryTheory.Monad.toMon
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : CategoryTheory.Monad C)
:
Mon_ (CategoryTheory.Functor C C)
To every Monad C
we associated a monoid object in C ⥤ C
.
Equations
- CategoryTheory.Monad.toMon M = Mon_.mk M.toFunctor (CategoryTheory.Monad.η M) (CategoryTheory.Monad.μ M)
Instances For
@[simp]
theorem
CategoryTheory.Monad.monadToMon_obj
(C : Type u)
[CategoryTheory.Category.{v, u} C]
(M : CategoryTheory.Monad C)
:
(CategoryTheory.Monad.monadToMon C).toPrefunctor.obj M = CategoryTheory.Monad.toMon M
@[simp]
theorem
CategoryTheory.Monad.monadToMon_map_hom
(C : Type u)
[CategoryTheory.Category.{v, u} C]
:
∀ {X Y : CategoryTheory.Monad C} (f : X ⟶ Y),
((CategoryTheory.Monad.monadToMon C).toPrefunctor.map f).hom = f.toNatTrans
Passing from Monad C
to Mon_ (C ⥤ C)
is functorial.
Equations
- CategoryTheory.Monad.monadToMon C = CategoryTheory.Functor.mk { obj := CategoryTheory.Monad.toMon, map := fun {X Y : CategoryTheory.Monad C} (f : X ⟶ Y) => Mon_.Hom.mk f.toNatTrans }
Instances For
@[simp]
theorem
CategoryTheory.Monad.ofMon_μ
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : Mon_ (CategoryTheory.Functor C C))
:
@[simp]
theorem
CategoryTheory.Monad.ofMon_η
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : Mon_ (CategoryTheory.Functor C C))
:
def
CategoryTheory.Monad.ofMon
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : Mon_ (CategoryTheory.Functor C C))
:
To every monoid object in C ⥤ C
we associate a Monad C
.
Equations
- CategoryTheory.Monad.ofMon M = CategoryTheory.Monad.mk M.X M.one M.mul
Instances For
@[simp]
theorem
CategoryTheory.Monad.ofMon_obj
{C : Type u}
[CategoryTheory.Category.{v, u} C]
(M : Mon_ (CategoryTheory.Functor C C))
(X : C)
:
(CategoryTheory.Monad.ofMon M).toFunctor.toPrefunctor.obj X = M.X.toPrefunctor.obj X
@[simp]
theorem
CategoryTheory.Monad.monToMonad_map_toNatTrans
(C : Type u)
[CategoryTheory.Category.{v, u} C]
{X : Mon_ (CategoryTheory.Functor C C)}
{Y : Mon_ (CategoryTheory.Functor C C)}
(f : X ⟶ Y)
:
((CategoryTheory.Monad.monToMonad C).toPrefunctor.map f).toNatTrans = f.hom
@[simp]
theorem
CategoryTheory.Monad.monToMonad_obj
(C : Type u)
[CategoryTheory.Category.{v, u} C]
(M : Mon_ (CategoryTheory.Functor C C))
:
(CategoryTheory.Monad.monToMonad C).toPrefunctor.obj M = CategoryTheory.Monad.ofMon M
Passing from Mon_ (C ⥤ C)
to Monad C
is functorial.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
CategoryTheory.Monad.monadMonEquiv_unitIso_inv_app_toNatTrans_app
(C : Type u)
[CategoryTheory.Category.{v, u} C]
:
∀ (x : CategoryTheory.Monad C) (x_1 : C),
((CategoryTheory.Monad.monadMonEquiv C).unitIso.inv.app x).toNatTrans.app x_1 = CategoryTheory.CategoryStruct.id
(((CategoryTheory.Functor.comp (CategoryTheory.Monad.monadToMon C)
(CategoryTheory.Monad.monToMonad C)).toPrefunctor.obj
x).toPrefunctor.obj
x_1)
@[simp]
theorem
CategoryTheory.Monad.monadMonEquiv_functor
(C : Type u)
[CategoryTheory.Category.{v, u} C]
:
@[simp]
theorem
CategoryTheory.Monad.monadMonEquiv_unitIso_hom_app_toNatTrans_app
(C : Type u)
[CategoryTheory.Category.{v, u} C]
:
∀ (x : CategoryTheory.Monad C) (x_1 : C),
((CategoryTheory.Monad.monadMonEquiv C).unitIso.hom.app x).toNatTrans.app x_1 = CategoryTheory.CategoryStruct.id
(((CategoryTheory.Functor.id (CategoryTheory.Monad C)).toPrefunctor.obj x).toPrefunctor.obj x_1)
@[simp]
theorem
CategoryTheory.Monad.monadMonEquiv_counitIso_hom_app_hom
(C : Type u)
[CategoryTheory.Category.{v, u} C]
:
∀ (x : Mon_ (CategoryTheory.Functor C C)),
((CategoryTheory.Monad.monadMonEquiv C).counitIso.hom.app x).hom = CategoryTheory.CategoryStruct.id
((CategoryTheory.Functor.comp (CategoryTheory.Monad.monToMonad C)
(CategoryTheory.Monad.monadToMon C)).toPrefunctor.obj
x).X
@[simp]
theorem
CategoryTheory.Monad.monadMonEquiv_inverse
(C : Type u)
[CategoryTheory.Category.{v, u} C]
:
@[simp]
theorem
CategoryTheory.Monad.monadMonEquiv_counitIso_inv_app_hom
(C : Type u)
[CategoryTheory.Category.{v, u} C]
:
∀ (x : Mon_ (CategoryTheory.Functor C C)),
((CategoryTheory.Monad.monadMonEquiv C).counitIso.inv.app x).hom = CategoryTheory.CategoryStruct.id
((CategoryTheory.Functor.id (Mon_ (CategoryTheory.Functor C C))).toPrefunctor.obj x).X
Oh, monads are just monoids in the category of endofunctors (equivalence of categories).
Equations
- One or more equations did not get rendered due to their size.