module Declarative.Examples.StdLib.Nat where
open import Utils using (Kind;*) open import Type using (Ctx⋆;_⊢⋆_;Z;S) open Ctx⋆ open _⊢⋆_ open import Type.Equality using (_≡β_) open _≡β_ import Type.RenamingSubstitution as ⋆ open import Declarative using (Ctx;_⊢_;_∋_) open _⊢_ open _∋_ open import Declarative.Examples.StdLib.Function
G : ∀{Φ} → Φ ,⋆ * ⊢⋆ * G = Π (` Z ⇒ (` (S Z) ⇒ ` Z) ⇒ ` Z) M : ∀{Φ} → Φ ⊢⋆ * M = μ0 · ƛ G N : ∀{Φ} → Φ ⊢⋆ * N = G ⋆.[ M ] Zero : ∀{Φ}{Γ : Ctx Φ} → Γ ⊢ N Zero = Λ (ƛ (ƛ (` (S (Z ))))) -- succ = λ n : N . Λ R . λ x : R . λ y : M → R . y (in n) -- : N → N Succ : ∀{Φ}{Γ : Ctx Φ} → Γ ⊢ N ⇒ N Succ = ƛ (Λ (ƛ (ƛ (` Z · (wrap0 (ƛ G) (conv (sym≡β (β≡β _ _)) (` (S (S (T Z)))))))))) --FoldNat : ∀{Φ}{Γ : Ctx Φ} → {!!} --FoldNat = {!!}