From the post:

I wrote:Let a({x_{n}}) be the "extended Ackermann function" of the set of numbers {x_{n}}.

a(x) = x+1.

a({x_{n}},0,0...0) = a({x_{n}}). Any trailing zeroes are cut off.

Let {m,n} be two natural numbers that are the arguments of the extended Ackermann function.

When {x_{n}} has 2 terms, the function is the standard Ackermann function, with the exception that the terms are reversed. I.e.

1. a(0,0) = 1

2. a(m,0) = m+1

3. a(0,n) = a(1, n-1)

4. a(m,n) = a(a(m-1, n), n-1)

Now, let {x,y,z} be three natural numbers that are the arguments on the second function:

1. a(0,0,0) = 1

2. a(x,0,0) = x+1

3. a(0,y,0) = a(1, y-1, 0)

4. a(0,0,z) = a(0, 1, z-1)

5. a(x,y,0) = a(a(x-1, y, 0), y-1, 0)

6. a(x,0,z) = a(a(x-1, 0, z), 1, z-1)

7. a(0,y,z) = a(1, y, z-1)

8. a(x,y,z) = a( a( a(x-1,y,z), y-1, z-1 ), a(x, y-1, z), z-1)

You can see how quickly this gets complicated. In fact, the formula for a(m, n, p, q, r) (where m, n, p, q, r are natural numbers) is:

a( a( a( a( a(m-1, n, p, q, r), n-1, p-1, q-1, r-1), a(m, n-1, p, q, r), p-1, q-1, r-1), a( a(m-1, n, p, q, r), n-1, p-1, q-1, r-1), a(m, n, p-1, q, r), q-1, r-1), a(a(a(m-1, n, p, q, r), n-1, p-1, q-1, r-1), a(m, n-1, p, q, r), p-1, q-1, r-1), a(a(m-1, n, p, q, r), n-1, p-1, q-1, r-1), a(m, n, p, q-1, r), r-1)

I know it's not rigorously defined, but I'm guessing that you can interpolate. Actually, the equation can be rigorously defined if all the terms are greater than zero, but it's the complex situations of zero terms that I'm most worried about.

The rigorous definition for a({x_{n}}) is as follows:

Imagine a "tower size" property. That is, f(f(f(f(f(n))))) has 5 layers of brackets, so is of tower size 5. The "e" in f(f(f(f(f(a, b), c), d), e), n) is in a function of tower size 4. Any expression that is not inside a function has tower size 0.

For the extended Ackermann function, the tower size is expressed as follows: the tower layout of a[n] (where n is the tower size) is a[a[n-1], a[n-2], ..., a[1], a[0]], where a[0] is a constant.

If any arguments are missing, fill them in with the arguments that are in the same position as the missing arguments, minus one. (e.g. a(m,n) = a(a(m-1,n),n-1), where n-1 is the fill-in argument.)

If an a() is of tower size 1, only one argument is subtracted by 1 (the rest are left alone), and that argument is in the same position as the position that the entire a() function of tower size 1 is at, in the tower directly below it. (e.g. a(x,y,z) = a( a( a(x-1,y,z), y-1, z-1 ), a(x, y-1, z), z-1). The y-1 in a(x,y-1,z) is there because the entire function is in position 2 of the function directly below it.)

Basically, the extended Ackermann function is a fractal.

To give you an example, let me show you the calculation process of a(1,1,1).

a(1,1,1) = a( a( a(0, 1, 1), 0, 0), a(1, 0, 1), 0)

a(0,1,1) = a(1,1,0) = a(1,1) = 3

therefore, a(1,1,1) = a(a(3, 0, 0), a(1,0,1), 0)

a(3,0,0) = a(3) = 4

a(1,0,1) = a(a(0,0,1), 1, 0)

a(0,0,1) = a(0,1,0) = a(1,0,0) = 2, so:

a(2,1,0) = a(2,1) = 4

therefore, a(1,1,1) = a(4,4,0) = a(4,4) =^{7}2 - 3, which is already a big-ass number.

The definitions for a(0, {x

_{n}}) are also pretty clear, any term whose first term is zero does not recur at all, but instead, redefines itself. E.g.:

a(0,0,3,0,0,0,5) = a(0,1,2,0,0,1,4). Each term greater than zero gives up 1 to the term to its left, unless the term was zero in the previous iteration. If that is the case, then it stays one. Note that there cannot be any trailing zeroes because they are eliminated from the sequence.

All these are very well defined. It's cases like a(m, 0, n, p, 0, q) that I'm worried about, where the first term is not zero and there are zero terms in between. It's easy to manually define each case [e.g. in the previous case mentioned, the answer is a( a( a(m-1, 0, n, p, 0, q), 1, n, p-1, 1, q-1), 1, a(m, 0, n-1, p, 0, q), p-1, 1, q-1 )], but I want to create a general definition.

Can anybody help?