0 | : | b |
cons | : | [b × a] ⟶ a |
curry | : | [b → b → b × b] ⟶ b → b |
double | : | a → a |
inc | : | a → a |
map | : | [b → b] ⟶ a → a |
nil | : | a |
plus | : | b → b → b |
s | : | [b] ⟶ b |
times | : | b → b → b |
X | : | b |
Y | : | b |
U | : | b |
V | : | b |
W | : | b |
P | : | b |
F1 | : | b → b → b |
Y1 | : | b |
U1 | : | b |
H1 | : | b → b |
I1 | : | b → b |
P1 | : | b |
X2 | : | a |
plus · 0 · X | ⇒ | X |
plus · s(Y) · U | ⇒ | s(plus · Y · U) |
times · 0 · V | ⇒ | 0 |
times · s(W) · P | ⇒ | plus · (times · W · P) · P |
curry(F1, Y1) · U1 | ⇒ | F1 · Y1 · U1 |
map(H1) · nil | ⇒ | nil |
map(I1) · cons(P1, X2) | ⇒ | cons(I1 · P1, map(I1) · X2) |
inc | ⇒ | map(curry(plus, s(0))) |
double | ⇒ | map(curry(times, s(s(0)))) |