## 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
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***
  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 = {!   !}