Free Elgot algebras

module Algebra.Elgot.Free {o  e} {C : Category o  e} (cocartesian : Cocartesian C) where
  open import Algebra.Elgot cocartesian
  open import Category.Construction.ElgotAlgebras cocartesian
  open import Categories.Morphism.Properties C

  open Category C
  open Cocartesian cocartesian
  open Equiv
  open HomReasoning
  open MR C
  open M C

A free elgot algebra is a free object in the category of Elgot algebras.

  elgotForgetfulF : Functor Elgot-Algebras C
  elgotForgetfulF = record
    { F₀ = λ X  Elgot-Algebra.A X
    ; F₁ = λ f  Elgot-Algebra-Morphism.h f
    ; identity = refl
    ; homomorphism = refl
    ; F-resp-≈ = λ x  x
    }

  -- typedef
  FreeElgotAlgebra : Obj  Set (suc o  suc   suc e)
  FreeElgotAlgebra X = FreeObject {C = C} {D = Elgot-Algebras} elgotForgetfulF X