Alphabet

0:nat
s:[nat] ⟶ nat
err:nat
pred:[nat] ⟶ nat
id:nat → nat
add:[nat] ⟶ nat → nat
nul:nat → bool
eq:[nat] ⟶ nat → bool
true:bool
false:bool

Variables

X:nat
Y:nat

Rules

nul · 0true
nul · s(X)false
nul · errfalse
pred(0)err
pred(s(X))X
id · XX
eq(0)nul
eq(s(X))λz:nat.eq(X) · pred(z)
add(0)id
add(s(X))λz:nat.add(X) · s(z)