# Special coequalizers associated to a monad #

Associated to a monad T : C ⥤ C we have important coequalizer constructions: Any algebra is a coequalizer (in the category of algebras) of free algebras. Furthermore, this coequalizer is reflexive. In C, this cofork diagram is a split coequalizer (in particular, it is still a coequalizer). This split coequalizer is known as the Beck coequalizer (as it features heavily in Beck's monadicity theorem).

This file has been adapted to Mathlib.CategoryTheory.Monad.Equalizer. Please try to keep them in sync.

Show that any algebra is a coequalizer of free algebras.

@[simp]
theorem CategoryTheory.Monad.FreeCoequalizer.topMap_f {C : Type u₁} [] {T : } (X : T.Algebra) :
= T.map X.a
def CategoryTheory.Monad.FreeCoequalizer.topMap {C : Type u₁} [] {T : } (X : T.Algebra) :
T.free.obj (T.obj X.A) T.free.obj X.A

The top map in the coequalizer diagram we will construct.

Equations
• = T.free.map X.a
Instances For
@[simp]
theorem CategoryTheory.Monad.FreeCoequalizer.bottomMap_f {C : Type u₁} [] {T : } (X : T.Algebra) :
= T.app X.A
def CategoryTheory.Monad.FreeCoequalizer.bottomMap {C : Type u₁} [] {T : } (X : T.Algebra) :
T.free.obj (T.obj X.A) T.free.obj X.A

The bottom map in the coequalizer diagram we will construct.

Equations
• = { f := T.app X.A, h := }
Instances For
@[simp]
theorem CategoryTheory.Monad.FreeCoequalizer.π_f {C : Type u₁} [] {T : } (X : T.Algebra) :
def CategoryTheory.Monad.FreeCoequalizer.π {C : Type u₁} [] {T : } (X : T.Algebra) :
T.free.obj X.A X

The cofork map in the coequalizer diagram we will construct.

Equations
• = { f := X.a, h := }
Instances For
instance CategoryTheory.Monad.instIsReflexivePairAlgebraTopMapBottomMap {C : Type u₁} [] {T : } (X : T.Algebra) :
Equations
• =
@[simp]
theorem CategoryTheory.Monad.beckAlgebraCofork_pt {C : Type u₁} [] {T : } (X : T.Algebra) :
@[simp]
theorem CategoryTheory.Monad.beckAlgebraCofork_ι_app {C : Type u₁} [] {T : } (X : T.Algebra) :
def CategoryTheory.Monad.beckAlgebraCofork {C : Type u₁} [] {T : } (X : T.Algebra) :

Construct the Beck cofork in the category of algebras. This cofork is reflexive as well as a coequalizer.

Equations
Instances For
def CategoryTheory.Monad.beckAlgebraCoequalizer {C : Type u₁} [] {T : } (X : T.Algebra) :

The cofork constructed is a colimit. This shows that any algebra is a (reflexive) coequalizer of free algebras.

Equations
• One or more equations did not get rendered due to their size.
Instances For
def CategoryTheory.Monad.beckSplitCoequalizer {C : Type u₁} [] {T : } (X : T.Algebra) :
CategoryTheory.IsSplitCoequalizer (T.map X.a) (T.app X.A) X.a

The Beck cofork is a split coequalizer.

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Monad.beckCofork_pt {C : Type u₁} [] {T : } (X : T.Algebra) :
= X.A
def CategoryTheory.Monad.beckCofork {C : Type u₁} [] {T : } (X : T.Algebra) :
CategoryTheory.Limits.Cofork (T.map X.a) (T.app X.A)

This is the Beck cofork. It is a split coequalizer, in particular a coequalizer.

Equations
Instances For
@[simp]
theorem CategoryTheory.Monad.beckCofork_π {C : Type u₁} [] {T : } (X : T.Algebra) :
= X.a
def CategoryTheory.Monad.beckCoequalizer {C : Type u₁} [] {T : } (X : T.Algebra) :

The Beck cofork is a coequalizer.

Equations
• = .isCoequalizer
Instances For
@[simp]
theorem CategoryTheory.Monad.beckCoequalizer_desc {C : Type u₁} [] {T : } (X : T.Algebra) (s : CategoryTheory.Limits.Cofork (T.map X.a) (T.app X.A)) :
.desc s = CategoryTheory.CategoryStruct.comp (T.app X.A) s