Current section
Files
Jump to
Current section
Files
test/agda/canonical.agda
module canonical where
def A : Set = π
def B (b : π) : Setβ = indβ (Ξ» (_ : π), Setβ) π π b
def Nat : Setβ = W (b : A), B b
def zero : Nat = sup A B 0β (Ξ» (e : π), indβ Nat e)
def succ (n : Nat) : Nat = sup A B 1β (Ξ» (u : π), n)
def plus (m n : Nat) : Nat =
indα΅ A B (Ξ» (_ : Nat), Nat)
(Ξ» (b : π) (f : (B b) β Nat) (rec : (B b) β Nat),
indβ (Ξ» (b : π), (B b β Nat) β (B b β Nat) β Nat)
(Ξ» (f1 : π β Nat) (rec1 : π β Nat), n)
(Ξ» (f2 : π β Nat) (rec2 : π β Nat), succ (rec2 β
))
b f rec)
m
-- W-types (Internalized)
def WNat : Setβ = Nat
def zero_w : WNat = zero
def succ_w (n : WNat) : WNat = succ n