Current section
Files
Jump to
Current section
Files
test/per/canonical.per
module canonical where
def A : U := π
def B (b : π) : Uβ := indβ (Ξ» (_ : π), Uβ) π π b
def Nat : Uβ := 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 : U := Nat
def zero_w : WNat := zero
def succ_w (n : WNat) : WNat := succ n