bsc-leon-vatthauer/src/MonadK.lagda.md

76 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
```agda
open import Level
open import Categories.Category.Core
open import Categories.Category.Equivalence using (StrongEquivalence)
open import Categories.Category.Extensive.Bundle
open import Function using (id)
open import UniformIterationAlgebras
open import UniformIterationAlgebra
open import Categories.FreeObjects.Free
open import Categories.Functor.Core
open import Categories.Adjoint
open import Categories.Adjoint.Properties
open import Categories.Adjoint.Monadic.Crude
open import Categories.NaturalTransformation.Core renaming (id to idN)
open import Categories.Monad
open import Categories.Category.Construction.EilenbergMoore
open import Categories.Category.Slice
```
-->
## Summary
In this file I explore the monad ***K*** and its properties:
- [X] *Lemma 16* Definition of the monad
- [ ] *Lemma 16* EilenbergMoore⇒UniformIterationAlgebras (use [crude monadicity theorem](https://agda.github.io/agda-categories/Categories.Adjoint.Monadic.Crude.html))
- [ ] *Proposition 19* ***K*** is strong
- [ ] *Theorem 22* ***K*** is an equational lifting monad
- [ ] *Proposition 23* The Kleisli category of ***K*** is enriched over pointed partial orders and strict monotone maps
- [ ] *Proposition 25* ***K*** is copyable and weakly discardable
- [ ] *Theorem 29* ***K*** is an initial pre-Elgot monad and an initial strong pre-Elgot monad
## Code
```agda
module MonadK {o e} (D : ExtensiveDistributiveCategory o e) where
open ExtensiveDistributiveCategory D renaming (U to C; id to idC)
open Equiv
-- TODO move this to a different file
forgetfulF : Functor (Uniform-Iteration-Algebras D) C
forgetfulF = record
{ F₀ = λ X Uniform-Iteration-Algebra.A X
; F₁ = λ f Uniform-Iteration-Algebra-Morphism.h f
; identity = refl
; homomorphism = refl
; F-resp-≈ = id
}
-- typedef
FreeUniformIterationAlgebra : Obj Set (suc o suc suc e)
FreeUniformIterationAlgebra X = FreeObject {C = C} {D = Uniform-Iteration-Algebras D} forgetfulF X
```
### *Lemma 16*: definition of monad ***K***
```agda
record MonadK : Set (suc o suc suc e) where
field
algebras : X FreeUniformIterationAlgebra X
freeF : Functor C (Uniform-Iteration-Algebras D)
freeF = FO⇒Functor forgetfulF algebras
adjoint : freeF forgetfulF
adjoint = FO⇒LAdj forgetfulF algebras
K : Monad C
K = adjoint⇒monad adjoint
-- EilenbergMoore⇒UniformIterationAlgebras : StrongEquivalence (EilenbergMoore K) (Uniform-Iteration-Algebras D)
-- EilenbergMoore⇒UniformIterationAlgebras = {! !}
```