Eilenberg-Moore (co)algebras for a (co)monad
This file defines Eilenberg-Moore (co)algebras for a (co)monad, and provides the category instance for them. Further it defines the adjoint pair of free and forgetful functors, respectively from and to the original category, as well as the adjoint pair of forgetful and cofree functors, respectively from and to the original category.
References
- [Riehl, Category theory in context, Section 5.2.4][riehl2017]
- A : C
- a : T.obj c.A ⟶ c.A
- unit' : (η_ T).app c.A ≫ c.a = 𝟙 c.A . "obviously"
- assoc' : (μ_ T).app c.A ≫ c.a = T.map c.a ≫ c.a . "obviously"
An Eilenberg-Moore algebra for a monad T
.
cf Definition 5.2.3 in [Riehl][riehl2017].
A morphism of Eilenberg–Moore algebras for the monad T
.
The identity homomorphism for an Eilenberg–Moore algebra.
Composition of Eilenberg–Moore algebra homomorphisms.
The category of Eilenberg-Moore algebras for a monad. cf Definition 5.2.4 in [Riehl][riehl2017].
Equations
- category_theory.monad.algebra.EilenbergMoore = {to_category_struct := {to_has_hom := {hom := category_theory.monad.algebra.hom _inst_2}, id := category_theory.monad.algebra.hom.id _inst_2, comp := category_theory.monad.algebra.hom.comp _inst_2}, id_comp' := _, comp_id' := _, assoc' := _}
The forgetful functor from the Eilenberg-Moore category, forgetting the algebraic structure.
Equations
- category_theory.monad.forget T = {obj := λ (A : category_theory.monad.algebra T), A.A, map := λ (A B : category_theory.monad.algebra T) (f : A ⟶ B), f.f, map_id' := _, map_comp' := _}
The free functor from the Eilenberg-Moore category, constructing an algebra for any object.
The adjunction between the free and forgetful constructions for Eilenberg-Moore algebras for a monad. cf Lemma 5.2.8 of [Riehl][riehl2017].
Equations
- category_theory.monad.adj T = category_theory.adjunction.mk_of_hom_equiv {hom_equiv := λ (X : C) (Y : category_theory.monad.algebra T), {to_fun := λ (f : (category_theory.monad.free T).obj X ⟶ Y), (η_ T).app X ≫ f.f, inv_fun := λ (f : X ⟶ (category_theory.monad.forget T).obj Y), {f := T.map f ≫ Y.a, h' := _}, left_inv := _, right_inv := _}, hom_equiv_naturality_left_symm' := _, hom_equiv_naturality_right' := _}
Given an algebra morphism whose carrier part is an isomorphism, we get an algebra isomorphism.
Equations
- category_theory.monad.algebra_iso_of_iso T f = {inv := {f := category_theory.is_iso.inv f.f i, h' := _}, hom_inv_id' := _, inv_hom_id' := _}
Equations
- A : C
- a : c.A ⟶ G.obj c.A
- counit' : c.a ≫ (ε_ G).app c.A = 𝟙 c.A . "obviously"
- coassoc' : c.a ≫ (δ_ G).app c.A = c.a ≫ G.map c.a . "obviously"
An Eilenberg-Moore coalgebra for a comonad T
.
A morphism of Eilenberg-Moore coalgebras for the comonad G
.
The identity homomorphism for an Eilenberg–Moore coalgebra.
Composition of Eilenberg–Moore coalgebra homomorphisms.
The category of Eilenberg-Moore coalgebras for a comonad.
Equations
- category_theory.comonad.coalgebra.EilenbergMoore = {to_category_struct := {to_has_hom := {hom := category_theory.comonad.coalgebra.hom _inst_2}, id := category_theory.comonad.coalgebra.hom.id _inst_2, comp := category_theory.comonad.coalgebra.hom.comp _inst_2}, id_comp' := _, comp_id' := _, assoc' := _}
The forgetful functor from the Eilenberg-Moore category, forgetting the coalgebraic structure.
Equations
- category_theory.comonad.forget G = {obj := λ (A : category_theory.comonad.coalgebra G), A.A, map := λ (A B : category_theory.comonad.coalgebra G) (f : A ⟶ B), f.f, map_id' := _, map_comp' := _}
The cofree functor from the Eilenberg-Moore category, constructing a coalgebra for any object.
The adjunction between the cofree and forgetful constructions for Eilenberg-Moore coalgebras for a comonad.
Equations
- category_theory.comonad.adj G = category_theory.adjunction.mk_of_hom_equiv {hom_equiv := λ (X : category_theory.comonad.coalgebra G) (Y : C), {to_fun := λ (f : (category_theory.comonad.forget G).obj X ⟶ Y), {f := X.a ≫ G.map f, h' := _}, inv_fun := λ (g : X ⟶ (category_theory.comonad.cofree G).obj Y), g.f ≫ (ε_ G).app Y, left_inv := _, right_inv := _}, hom_equiv_naturality_left_symm' := _, hom_equiv_naturality_right' := _}