Monadic adjunctions🔗
An adjunction
between functors
and
is monadic if the induced comparison functor
(where the right-hand side is the Eilenberg-Moore
category of the monad of the adjunction) is an
equivalence of categories.
module
.Functor.Adjoint.Monadic
Cat{o₁ h₁ o₂ h₂ : _}
{C : Precategory o₁ h₁}
{D : Precategory o₂ h₂}
{L : Functor C D} {R : Functor D C}
(L⊣R : L ⊣ R)
where
private
module C = Cat.Reasoning C
module D = Cat.Reasoning D
module L = Cat.Functor.Reasoning L
module R = Cat.Functor.Reasoning R
module adj = _⊣_ L⊣R
: Monad-on _
R∘L = Adjunction→Monad L⊣R
R∘L
open Monad-on R∘L
_ = Algebra
The composition of R.₁
with the
adjunction counit
natural
transformation gives R
an Algebra
structure, thus extending
R
to a functor
: Functor D (Eilenberg-Moore R∘L)
Comparison-EM .F₀ x = R.₀ x , alg where
Comparison-EM : Algebra-on R∘L (R.₀ x)
alg .Algebra-on.ν = R.₁ (adj.counit.ε _)
alg .Algebra-on.ν-unit = adj.zag
alg .Algebra-on.ν-mult = R.weave (sym $ adj.counit.is-natural _ _ _) alg
Construction of the functorial action of Comparison-EM
.F₁ x .fst = R.₁ x
Comparison-EM .F₁ x .snd = R.weave (sym (adj.counit.is-natural _ _ _))
Comparison-EM .F-id = ext R.F-id
Comparison-EM .F-∘ f g = ext (R.F-∘ _ _) Comparison-EM
By construction, the composition of the comparison functor with the forgetful functor is equal to
: Forget-EM F∘ Comparison-EM ≡ R
Forget∘Comparison≡R = Functor-path (λ _ → refl) (λ _ → refl) Forget∘Comparison≡R
To summarise, we have the following triangle:
An adjunction is monadic if Comparison-EM
is an equivalence of categories, thus
exhibiting
as the category of
: Type _
is-monadic = is-equivalence Comparison-EM is-monadic
We also say that the right adjoint is a monadic functor.
Monadic functors create limits🔗
By the description of limits in categories of
algebras, Forget-EM
creates limits.
Furthermore, if the adjunction
is monadic, then Comparison-EM
is
an equivalence of categories, so it also creates limits. Since this
property is closed under composition, monadic functors creates
limits.
module _ (monadic : is-monadic) where
monadic→creates-limits: ∀ {oj ℓj} {J : Precategory oj ℓj} → creates-limits-of J R
= subst (creates-limits-of _) Forget∘Comparison≡R $
monadic→creates-limits (equivalence→creates-limits monadic)
F∘-creates-limits (Forget-EM-creates-limits R∘L)