open import Function open import Data.Unit open import Data.Product open import Data.Nat open import Data.Fin open import Chapter1.Logic open import Chapter2.IDesc open import Chapter2.IDesc.Fixpoint open import Chapter2.IDesc.InitialAlgebra open import Chapter5.Ornament open import Chapter5.CartesianMorphism module Chapter5.OrnamentalAlgebra {I K : Set} (D : func K K) (u : I → K) (o : orn D u u) where ornAlgebra : ⟦ ⟦ o ⟧orn ⟧func (μ D ∘ u) ⇒ ((μ D) ∘ u) ornAlgebra xs = ⟨ forgetNat o xs ⟩ forgetOrnament : μ ⟦ o ⟧orn ⇒ (μ D ∘ u) forgetOrnament = ifold ⟦ o ⟧orn ornAlgebra