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