module Chapter5.AlgebraicOrnament.Examples.Vec 
         (A : Set)
       where

open import Function

open import Data.Unit
open import Data.Nat
open import Data.Fin
open import Data.Product

open import Relation.Binary.PropositionalEquality

open import Chapter2.IDesc
open import Chapter2.IDesc.Fixpoint
open import Chapter2.IDesc.InitialAlgebra
open import Chapter2.IDesc.Examples.Nat

open import Chapter5.Ornament
open import Chapter5.Ornament.Examples.List

open import Chapter5.Ornament.Algebra (ListO A)
open import Chapter5.AlgebraicOrnament ( ListO A ⟧orn) ornAlgebra

Vec : Nat  Set
Vec n = μ algOrnD (tt , n)

vnil : Vec ze
vnil =  (zero , tt) , refl , tt 

vcons : ∀{n}  A  Vec n  Vec (su n)
vcons {n} a xs =  (suc zero , a , n , tt) , 
                   refl , xs , tt