User blog:ArtismScrub/Analysis (and possible extension) to Fish's s(n) map

See s(n) map.

Definition
s(1)[f(n)] = fn(n)

s(n)[f(m)] = s(n-1) m[f(m)] if n > 1

With only two arguments, this reaches  ωω-level recursion.

It's standard to set f(n) = n+1 in this case--using a pre-defined function would be rather naive.

Comparison to FGH if f(n) = n+1
f(n) = n+1 = f0(n)

f 2 (n) = n+2

f 3 (n) = n+3

f a (n) = n+a

s(1)[f(n)] =  f n (n) = 2n =  f 1 (n)

s(1)2[f(n)] =  s(1)[ f n (n) ]  =  s(1)[2n ]  = 2n×n =  f 2 (n)

s(1) 3 [f(n)] =   s(1)[ 2 n ×n ] =  f 3 (n) > (2↑) n ↑n

s(1) 4 [f(n)] =  f 4 (n) > (2↑ ↑ ) n ↑ ↑ n

s(1) a [f(n)] =  f a (n) > (2↑ <sup style="font-weight:400;">a ) <sup style="font-weight:400;">n ↑ <sup style="font-weight:400;">a  n

s(2)[f(n)] =  s(1) <sup style="font-weight:400;">n [f(n)] =  f <sub style="font-weight:400;">ω (n)

s(1)[ s(2)[f(n)] ] =  s(2)[f( s(2)[f( s(2)[f(... s(2)[f( s(2)[f(n)] )] ...)] )] )] with n "s(2)"s =  f <sub style="font-weight:400;">ω+1 (n)

s(1) <sup style="font-weight:400;">2 [ s(2)[f(n)] ] =  f <sub style="font-weight:400;">ω+2 (n)

s(1) <sup style="font-weight:400;">a [ s(2)[f(n)] ] =  f <sub style="font-weight:400;">ω+a (n)

s(2) <sup style="font-weight:400;">2 [f(n)] =  s(1) <sup style="font-weight:400;">n [ s(2)[f(n)] ]  =  f <sub style="font-weight:400;">ω2 (n)

s(1) <sup style="font-weight:400;">a [ s(2) <sup style="font-weight:400;">2 [f(n)] ] =  f <sub style="font-weight:400;">ω2+a (n)

s(2) <sup style="font-weight:400;">3 [f(n)] =  s(1) <sup style="font-weight:400;">n   [  s(2) <sup style="font-weight:400;">2 [f(n)] ]  =  f <sub style="font-weight:400;">ω3 (n)

s(2) <sup style="font-weight:400;">a [f(n)] =  s(1) <sup style="font-weight:400;">n   [  s(2) <sup style="font-weight:400;">a-1 [f(n)] ]  =  f <sub style="font-weight:400;">ωa (n)

s(1) <sup style="font-weight:400;">a [ s(2) <sup style="font-weight:400;">b [f(n)] ] =  f <sub style="font-weight:400;">ωb+a (n)

s(3)[f(n)] =  s(2) <sup style="font-weight:400;">n [f(n)] =  f <sub style="font-weight:400;">ω2 (n)

s(1) <sup style="font-weight:400;">a [ s(3)[f(n)] ] =  f <sub style="font-weight:400;">ω2 <sub style="font-weight:400;">+a (n)

s(2) <sup style="font-weight:400;">a [ s(3)[f(n)] ] =  f <sub style="font-weight:400;">ω2 <sub style="font-weight:400;">+ωa (n)

s (3) <sup style="font-weight:400;">a [f(n)] =  f <sub style="font-weight:400;">ω2 <sub style="font-weight:400;">a (n)

s(4)[f(n)] =  s(3) <sup style="font-weight:400;">n [f(n)] =  f <sub style="font-weight:400;">ω3 (n)

s(5)[f(n)] =  s(4) <sup style="font-weight:400;">n [f(n)] =  f <sub style="font-weight:400;">ω4 (n)

s(a)[f(n)] =  s(a-1) <sup style="font-weight:400;">n [f(n)] =  f <sub style="font-weight:400;">ωa-1 (n)

s(1) <sup style="font-weight:400;">a [ s(2) <sup style="font-weight:400;">b [ s (3) <sup style="font-weight:400;">c [ s(4) <sup style="font-weight:400;">d [ s(5) <sup style="font-weight:400;">e [...] ] ] ] ] =  f <sub style="font-weight:400;">...+ω4 <sub style="font-weight:400;">e <sub style="font-weight:400;">+ω3 <sub style="font-weight:400;">d <sub style="font-weight:400;">+ω2 <sub style="font-weight:400;">c <sub style="font-weight:400;">+ωb+a (n)

Limit:  s(n+1)[f(n)] =  f <sub style="font-weight:400;">ωω (n)

Extension
In the definition of Fish number 3, an extension is made called ss(n) map. It is defined as:

ss(1)[f(n)] = s(n)[f(n)]

ss(n)[f(m)] =  ss(n-1) <sup style="font-weight:400;">m [f(m)] if m > 1

Unfortunately, at this point, this function can no longer be compared directly to FGH, due to the fact that:

s(n+1)[f(n)] =  f <sub style="font-weight:400;">ωn (n) =  f <sub style="font-weight:400;">ωω (n)

s(n)[f(n)] =  f <sub style="font-weight:400;">ωn-1 (n) ≠  f <sub style="font-weight:400;">ωω (n)

But that's not necessary.

In this extension, ss(n) can just be expressed as s(n,2). Then, we can define the following extension based off of this:

s(a,1)[f(n)] =  s(a)[f(n)]

s(1,b)[f(n)] =  s(n,b-1)[f(n)]

s(a,b)[f(n)] =  s (a-1,b) <sup style="font-weight:400;">n [f(n)]

Or, actually, generalize this to any number of arguments:

(@ represents the rest of the array, or none)

s(@,1)[f(n)] =  s(@)[f(n)]

s(1,1,1,...,1,1,1,a,@)[f(n)] =  s(n,n,n,...,n,n,n,a-1,@)[f(n)]

s(a,@)[f(n)] =  s (a-1,@) <sup style="font-weight:400;">n [f(n)]

Comparison to FGH if f(n) = n+1
Note: All expressions are actually equal to significantly less than their approximations. s(1,2)[f(n)] = s(n)[f(n)] =  f <sub style="font-weight:400;">ωn-1 (n) ≈  f <sub style="font-weight:400;">ωω (n)

s(1)[ s(1,2)[f(n)]]  ≈  f <sub style="font-weight:400;">ωω <sub style="font-weight:400;">+1 (n)

s(2 ) [ s(1,2)[f(n)]]  ≈  f <sub style="font-weight:400;">ωω <sub style="font-weight:400;">+ω (n)

s(3 ) [ s(1,2)[f(n)]]  ≈  f <sub style="font-weight:400;">ωω <sub style="font-weight:400;">+ω2 (n)

s(a ) [ s(1,2)[f(n)]]  ≈  f <sub style="font-weight:400;">ωω <sub style="font-weight:400;">+ωa-1 (n)

s(1,2 ) <sup style="font-weight:400;">a [f(n)]  ≈  f <sub style="font-weight:400;">ωω <sub style="font-weight:400;">a (n)

s(2,2)[f(n)] =  s(1,2) <sup style="font-weight:400;">n [f(n)]  ≈  f <sub style="font-weight:400;">ωω+1 (n)

s(a,2)[f(n)] =  s(a-1,2) <sup style="font-weight:400;">n [f(n)]  ≈  f <sub style="font-weight:400;">ωω+a-1 (n)

s(1,3)[f(n)] = s(n,2)[f(n)]  ≈  f <sub style="font-weight:400;">ωω+n-1 (n)  ≈  f <sub style="font-weight:400;">ωω2 (n)

s(a)[ s(1,3)[f(n)]]  ≈   f <sub style="font-weight:400;">ωω2 <sub style="font-weight:400;">+ωa-1 (n)

s(a,2)[ s(1,3)[f(n)]]  ≈   f <sub style="font-weight:400;">ωω2 <sub style="font-weight:400;">+ωω+a-1 (n)

s(2,3)[f(n)] =  s(1,3) <sup style="font-weight:400;">n [f(n)] ≈  f <sub style="font-weight:400;">ωω2+1 (n)

s(a,3)[f(n)] =  s(a-1,3) <sup style="font-weight:400;">n [f(n)] ≈  f <sub style="font-weight:400;">ωω2+a-1 (n)

s(1,4)[f(n)]  = s(n,3)[f(n)]  ≈   f <sub style="font-weight:400;">ωω3 (n)

s(1,a)[f(n)]  = s(n,a-1)[f(n)]  ≈   f <sub style="font-weight:400;">ωω(a-1) (n)

s(1,1,2)[f(n)] = s(n,n)[f(n)]  ≈  f <sub style="font-weight:400;">ωω(n-1)+n (n) =  f <sub style="font-weight:400;">ωωn (n) =  f <sub style="font-weight:400;">ωω 2 (n)

s(a)[ s(1,1,2)[f(n)]]  ≈   f <sub style="font-weight:400;">ωω 2   <sub style="font-weight:400;">+ωa-1 (n)

s(1,a)[ s(1,1,2)[f(n)]]  ≈   f <sub style="font-weight:400;">ωω 2   <sub style="font-weight:400;">+ωω(a-1) (n)

s(2,1,2)[f(n)] =  s(1,1,2) <sup style="font-weight:400;">n [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +1  (n)

s(a,1,2)[f(n)] =  s(a-1,1,2) <sup style="font-weight:400;">n [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +a-1  (n)

s(1,2,2)[f(n)] =  s(n,1,2) [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +n-1  (n)  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2  +ω  (n)

s(2,2,2)[f(n)] =  s(1,2,2) <sup style="font-weight:400;">n [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +ω+1  (n)

s(1,3,2)[f(n)] =  s(n,2,2) [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +ω2  (n)

s(1,4,2)[f(n)] =  s(n,3,2) [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +ω3  (n)

s(1,a,2)[f(n)] =  s(n,a-1,2) [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +ω(a-1)  (n)

s(a,b,2)[f(n)] =  s(a-1,b,2 ) <sup style="font-weight:400;">n [f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2  +ω(b-1)+a  (n)

s(1,1,3)[f(n)] = s(n,n,2)[f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 +ω(n-1)+n  (n)  =  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2  +ωn  (n)  =  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2  2  (n)

s(1,1,4)[f(n)] = s(n,n,3)[f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 3  (n)

s(1,1,a)[f(n)] = s(n,n,a-1)[f(n)]  ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 (a-1)  (n)

s(1,1,1,2)[f(n)] =  s(n,n,n)[f(n)]   ≈  <sub style="font-weight:400;">f <sub style="font-weight:400;">ω ω 2 (n-1)  (n)   ≈  f <sub style="font-weight:400;">ωω 3  (n)

s(1,1,1,1,2)[f(n)] =  s(n,n,n,n)[f(n)]   ≈  f <sub style="font-weight:400;">ωω 4 (n)

Limit: s(n,n,n,...(n "n"s)...,n,n,n) [f(n)]  ≈  f <sub style="font-weight:400;">ωω n (n) =  f <sub style="font-weight:400;">ωω ω  (n)

Well, that was disappointing. I expected  f <sub style="font-weight:400;">ε0 (n). Oh well. Still a proper and valid extension.