16 lines
634 B
Plaintext
16 lines
634 B
Plaintext
ackermann(m, n) := if integerp(m) and integerp(n) then ackermann[m, n] else 'ackermann(m, n)$
|
|
|
|
ackermann[m, n] := if m = 0 then n + 1
|
|
elseif m = 1 then 2 + (n + 3) - 3
|
|
elseif m = 2 then 2 * (n + 3) - 3
|
|
elseif m = 3 then 2^(n + 3) - 3
|
|
elseif n = 0 then ackermann[m - 1, 1]
|
|
else ackermann[m - 1, ackermann[m, n - 1]]$
|
|
|
|
tetration(a, n) := if integerp(n) then block([b: a], for i from 2 thru n do b: a^b, b) else 'tetration(a, n)$
|
|
|
|
/* this should evaluate to zero */
|
|
ackermann(4, n) - (tetration(2, n + 3) - 3);
|
|
subst(n = 2, %);
|
|
ev(%, nouns);
|