module Chapter2.Desc.Examples.Nat where open import Data.Unit open import Data.Product open import Data.Fin open import Relation.Binary.PropositionalEquality open import Chapter2.Desc open import Chapter2.Desc.Fixpoint NatD : Desc NatD = `Σ (Fin 2) (λ { zero → `1 ; (suc zero) → `var `× `1 ; (suc (suc ())) }) Nat : Set Nat = μ NatD ze : Nat ze = ⟨ zero , tt ⟩ su : Nat → Nat su n = ⟨ suc zero , n , tt ⟩ open import Chapter2.Desc.Lifting module TestLifting (P : Nat → Set) where test-lifting-ze : [ NatD ]^ P (zero , tt) ≡ ⊤ test-lifting-ze = refl test-lifting-su : ∀{n} → [ NatD ]^ P (suc zero , n , tt) ≡ Σ (P n) λ _ → ⊤ test-lifting-su = refl