open import Function

open import Data.Product

open import Chapter1.Logic

open import Chapter2.IDesc
open import Chapter2.IDesc.Fixpoint
open import Chapter2.IDesc.InitialAlgebra

open import Chapter5.Ornament

module Chapter5.Reornament.Algebra 
           {I K : Set}
           {D : func K K}
           {u : I  K}
           (o : orn D u u) where

open import Chapter5.Reornament o
open import Chapter5.Ornament.Algebra {u = forgetIdx} reorn

reornAlgebra :  reornD ⟧func (μ  o ⟧orn  forgetIdx)  μ  o ⟧orn  forgetIdx
reornAlgebra {i} = ornAlgebra {i} 

forgetReornament : μ reornD  μ  o ⟧orn  forgetIdx
forgetReornament {i} xs = fold reornD  {i}  reornAlgebra {i}) {i} xs