module Chapter6.IDesc.Examples.Walk where open import Level hiding (suc) renaming (zero to zeroL) open import Data.Unit open import Data.Nat open import Data.Fin hiding (lift) open import Data.Vec open import Data.Product open import Relation.Binary.PropositionalEquality open import Chapter6.IDesc open import Chapter6.IDesc.Fixpoint open import Chapter6.IDesc.Tagged WalkD : tagDesc zeroL ℕ WalkD = (1 , (λ n → `var (suc n) `× `1 ∷ [])) , ((λ { zero → 1 ; (suc n) → 1 }) , λ { zero → `1 ∷ [] ; (suc n) → `var n `× `1 ∷ [] }) Walk : ℕ → Set Walk = μ (toDesc WalkD) up : ∀{n} → Walk (suc n) → Walk n up w = ⟨ lift zero , w , lift tt ⟩ stop : Walk 0 stop = ⟨ lift (suc zero) , lift tt ⟩ down : ∀{n} → Walk n → Walk (suc n) down w = ⟨ lift (suc zero) , w , lift tt ⟩