Current section

Files

Jump to
per test per canonical.per
Raw

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