0 | : | nat |
s | : | [nat] ⟶ nat |
dec | : | [nat × nat] ⟶ nat |
rec | : | [nat × nat × nat × nat → nat → nat] ⟶ nat |
sumsqr | : | [nat] ⟶ nat |
+ | : | [nat × nat] ⟶ nat |
quad | : | [nat] ⟶ nat |
sqr | : | [nat] ⟶ nat |
p | : | [nat × nat] ⟶ nat |
d | : | nat |
x | : | nat |
y | : | nat |
U | : | nat |
F | : | nat → nat → nat |
dec(0, d) | ⇒ | 0 |
dec(x, 0) | ⇒ | x |
dec(s(x), s(d)) | ⇒ | dec(x, d) |
rec(0, d, U, F) | ⇒ | U |
rec(s(x), s(d), U, F) | ⇒ | rec(dec(x, d), s(d), F · U · x, F) |
sumsqr(x) | ⇒ | rec(x, s(0), 0, λz1:nat.λz2:nat.+(sqr(p(s(z2), 0)), z1)) |
+(0, x) | ⇒ | x |
+(s(x), y) | ⇒ | s(+(x, y)) |
quad(0) | ⇒ | 0 |
quad(s(x)) | ⇒ | s(s(s(s(quad(x))))) |
sqr(p(0, 0)) | ⇒ | 0 |
sqr(p(s(s(x)), y)) | ⇒ | sqr(p(x, s(y))) |
sqr(p(s(0), y)) | ⇒ | +(quad(sqr(p(y, 0))), s(quad(y))) |
sqr(p(0, s(y))) | ⇒ | quad(sqr(p(s(y), 0))) |