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