A program which is supposed to calculate \(f_{\vartheta(\Omega_\omega)+1}(10)\) was posted at googology thread of Japanese BBS 2ch.net (anonymous author; now GWiki accout BashicuHyudora was created.).[1][2] It is extention of a program written by the same author. The algorithm is called pair sequence system and the output of this program is called pair sequence number.[3]
Pair sequence is a finite sequence of pair of nonnegative integers, such as (0,0)(1,1)(2,2)(3,3)(3,2). Pair sequence P works as a function from natural numbers to natural numbers, and it can be denoted as P[n], such as (0,0)(1,1)(2,2)(3,3)(3,2)[n]. The function P[n] can be approximated with Hardy hierarchy, and the pair sequence itself represents the ordinal of the approximated Hardy hierarchy, such as \((0,0)(1,1)(2,2)(3,3)(3,2) = \psi(\psi_1(\Omega_2))\).
Original BASIC Code[]
dim A(Infinity):dim B(Infinity):C=9 for D=0 to 9 for E=0 to C A(E)=E:B(E)=E next for F=C to 0 step -1 C=C*C if B(F)=0 then G=1 else G=0 for H=0 to F*G if A(F-H)<A(F) or A(F)=0 then I=H:H=F*G next for J=1 to C*G*I A(F)=A(F-I):B(F)=B(F-I):F=F+1 next G=1-G for K=1 to F*G if A(F-K)<A(F) and B(F-K)<B(F) then L=A(F)-A(F-K):M=K:K=F*G next for N=1 to C*G*M A(F)=A(F-M)+L:B(F)=B(F-M):F=F+1 next next next print C
Equivalent C code[]
#include <stdio.h> #include <limits.h> /* Pair sequence number is returned from main(). This is illustrative code and not valid. Infite array is not allowed in C and should be implemented with malloc()/realloc(). */ int main(void) { int a[Infinity], b[Infinity]; /* It is not allowed in C. */ int c = 9, d, f, h, i, k; for (d = 0; d <= 9; d++) { for (h = 0; h <= c; h++) { a[h] = h; b[h] = h; } for (f = c; f >= 0; f--) { c = c * c; if (!b[f]) { for (h = 0; h <= f; h++) { if (a[f-h] < a[f] || !a[f]) { k = 0; i = h; h = f; } } } else { for (h = 1; h <= f; h++) { if (a[f-h] < a[f] && b[f-h] < b[f]) { k = a[f]-a[f-h]; i = h; h = f; } } } for (h = c * i; h; h--) { a[f] = a[f-i] + k; b[f] = b[f-i]; f++; } } } return c; }
C code for Bignum Bakeoff rule. It has 279 characters without whitespaces.
#define A a[f] #define B b[f] #define F for ( #define M = malloc(9), main(f) { int *a M *b M c = 9, d = 9, h, i, k; F ; d--;) { F h = c; h--;) a[h] = b[h] = h; F f = c; f--;) { c *= c; F h = f; h--;) (a[h] < A && (b[h] < B || !B) || A + B == 0)? (k = B ? A - a[h]: 0, i = f - h, h = 0): 0; h = f + c * i; a = realloc(a, h); b = realloc(b, h); F ; f < h; f++) A = a[f-i] + k, B = b[f-i]; } } return c; }
Calculation up to \(\epsilon_1\)[]
This program uses two arrays A and B which store pair sequence as follows. \[(A(0),B(0))(A(1),B(0))(A(2),B(2))...(A(F),B(F)) = \alpha\] where \(\alpha\) is the corresponding ordinal.
In the F loop, first B(F) is checked
if B(F)=0 then G=1 else G=0
and when B(F)=0, only the first part is conducted. Substituting G=1,
for H=0 to F if A(F-H)<A(F) or A(F)=0 then I=H:H=F next for J=1 to C*I A(F)=A(F-I):B(F)=B(F-I):F=F+1 next
This is similar to the program of \(\epsilon_0\) and therefore
\begin{eqnarray*} (0,0) &=& 1 \\ (0,0)(1,0) &=& \omega \\ (0,0)(1,0)(2,0) &=& \omega^\omega \\ (0,0)(1,0)(2,0)(3,0) &=& \omega^{\omega^\omega} \\ (0,0)(1,0)(2,0)(3,0)(4,0) &=& \omega^{\omega^{\omega^\omega}} \\ \end{eqnarray*}
When B(F)>0, only the latter part is conducted with G=1. Substituting G=1,
for K=1 to F if A(F-K)<A(F) and B(F-K)<B(F) then L=A(F)-A(F-K):M=K:K=F next for N=1 to C*M A(F)=A(F-M)+L:B(F)=B(F-M):F=F+1 next
See how it works for (0,0)(1,1) and C=3. F=1 and at K loop, it looks for A(F-K)<A(F) and B(F-K)<B(F); it is at K=1. Therefore L=A(1)-A(0)=1, M=1. At N loop, C*M=3*1=3 pairs of (0,0) are copied, but in this copy, A is increased with L=1, so that it becomes (1,0)(2,0)(3,0). As a result, it becomes \((0,0)(1,0)(2,0)(3,0) = \omega^{\omega^\omega}\). Therefore,
\[(0,0)(1,1) = \epsilon_0\]
(n,0)(n+1,1) works in the same way and therefore
\begin{eqnarray*} (0,0)(1,1)(1,0)(2,1) &=& \epsilon_0^2 \\ (0,0)(1,1)(1,0)(2,1)(2,0)(3,1) &=& \epsilon_0^{\epsilon_0} \\ (0,0)(1,1)(1,0)(2,1)(2,0)(3,1)(3,0)(4,1) &=& \epsilon_0^{\epsilon_0^2} \\ (0,0)(1,1)(1,0)(2,1)(2,0)(3,1)(3,0)(4,1)(4,0)(5,1) &=& \epsilon_0^{\epsilon_0^{\epsilon_0}} \\ \end{eqnarray*}
See how it works for (0,0)(1,1)(1,1) and C=3. F=1 and at K loop, it looks for A(F-K)<A(F) and B(F-K)<B(F); it is at K=2. Therefore L=A(2)-A(0)=1, M=2. At N loop, C*M=3*2=6 pairs of (0,0)(1,1) are copied, but in this copy, A is increased with L=1, so that it becomes (1,0)(2,1)(2,0)(3,1)(3,0)(3,1). As a result, it becomes \((0,0)(1,1)(1,0)(2,1)(2,0)(3,1)(3,0)(4,1) = \epsilon_0^{\epsilon_0^2}\). Therefore,
\[(0,0)(1,1)(1,1) = \epsilon_1\]
Calculation up to Bachman-Howard ordinal[]
From here, ordinal collapsing function \(\psi\) is used as shown here.
\begin{eqnarray*} \epsilon_0 &=& \psi(0) \\ \epsilon_n &=& \psi(n) \\ \zeta_0 &=& \phi_2(0) = \psi(\Omega) \\ \phi_2(n) &=& \psi(\Omega \cdot n) \\ \phi_3(0) &=& \psi(\Omega^2) \\ \phi_\omega(0) &=& \psi(\Omega^\omega) \\ \Gamma_0 &=& \psi(\Omega^\Omega) \\ \psi(\epsilon_{\Omega+1}) &=& \psi(\psi_1(0)) \\ \psi(\zeta_{\Omega+1}) &=& \psi(\psi_1(\Omega_2)) = \psi(\Omega_2) \\ \end{eqnarray*}
The author of the program demonstrated calculation of \((0,0)(1,1)(2,2) = \psi(\psi_1(0))\) (Bachman-Howard ordinal) with constant C=1, using this simplified program.[4]
dim A(Infinity):dim B(Infinity):C=1 for E=0 to 2 A(E)=E:B(E)=E next for F=2 to 0 step -1 if B(F)=0 then G=1 else G=0 for H=0 to F*G if A(F-H)<A(F) or A(F)=0 then I=H:H=F*G next for J=1 to C*G*I A(F)=A(F-I):B(F)=B(F-I):F=F+1 next G=1-G for K=1 to F*G if A(F-K)<A(F) and B(F-K)<B(F) then L=A(F)-A(F-K):M=K:K=F*G next for N=1 to C*G*M A(F)=A(F-M)+L:B(F)=B(F-M):F=F+1 next next print C
According to the author of the program, at each loop, the sequence of the pairs changes and the corresponding ordinal decreases as follows. It appears to be reasonable, but I am not yet confident with the calculation. I would like to know if googologists here think this calculation is valid.
\begin{eqnarray*} (0,0)(1,1)(2,2) &=& \psi(\psi_1(0)) \\ (0,0)(1,1)(2,1) &=& \psi(\Omega) \\ (0,0)(1,1)(2,0)(3,1) &=& \psi(\psi(0)) \\ (0,0)(1,1)(2,0)(3,0) &=& \psi(\omega^\omega) \\ (0,0)(1,1)(2,0)(2,0) &=& \psi(\omega^2) \\ (0,0)(1,1)(2,0)(1,1)(2,0) &=& \psi(\omega \cdot 2) \\ (0,0)(1,1)(2,0)(1,1)(1,1) &=& \psi(\omega+2) \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,1) &=& \psi(\omega+1) \cdot \psi(\omega+1) \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,0)(3,1)(4,0) &=& \psi(\omega+1) \cdot \psi(\omega) \cdot \psi(\omega) \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,0)(3,1)(3,1) &=& \psi(\omega+1) \cdot \psi(\omega) \cdot \psi(1) \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,0)(3,1)(3,0)(4,1) &=& \psi(\omega+1) \cdot \psi(\omega) \cdot \psi(0) \cdot \psi(0) \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,0)(3,1)(3,0)(4,0) &=& \psi(\omega+1) \cdot \psi(\omega) \cdot \psi(0) \cdot \omega^\omega \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,0)(3,1)(3,0)(3,0) &=& \psi(\omega+1) \cdot \psi(\omega) \cdot \psi(0) \cdot \omega^2 \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,0)(3,1)(3,0)(2,0)(3,1)(3,0) &=& \psi(\omega+1) \cdot \psi(\omega) \cdot \psi(0) \cdot \omega \cdot 2 \\ (0,0)(1,1)(2,0)(1,1)(1,0)(2,1)(3,0)(2,0)(3,1)(3,0)(2,0)(3,1)(2,0)(3,1) &=& \psi(\omega+1) \cdot \psi(\omega) \cdot (\psi(0) \cdot \omega+\psi(0) \cdot 2) \\ \end{eqnarray*}
Calculation with the simplified program which was changed to C=2 was written by the author as follows. The sequence and the corresponding ordinal decrease with each loop of F as follows. This result is also shown at the verification code section.
\begin{eqnarray*} (0,0)(1,1)(2,2) &=& \psi(\psi_1(0)) \\ (0,0)(1,1)(2,1)(3,1) &=& \psi(\Omega^\Omega) \\ (0,0)(1,1)(2,1)(3,0)(4,1)(5,1)(6,0)(7,1)(8,1) &=& \psi(\Omega^{\psi(\Omega^{\psi(\Omega)})}) \\ (0,0)(1,1)(2,1)(3,0)(4,1)(5,1)(6,0)(7,1)(8,0)(9,1)(10,0)(11,1) &=& \psi(\Omega^{\psi(\Omega^{\psi(\psi(\psi(0)))})}) \\ \text{Denoting } (0,0)(1,1)(2,1)(3,0)(4,1)(5,1)(6,0)(7,1)(8,0)(9,1) &=& X \\ X(10,0)(11,0)(12,0) &=& \psi(\Omega^{\psi(\Omega^{\psi(\psi(\omega^{\omega^\omega}))})}) \\ X(10,0)(11,0)(11,0)(11,0) &=& \psi(\Omega^{\psi(\Omega^{\psi(\psi(\omega^{\omega^3}))})}) \\ X(10,0)(11,0)(11,0)(10,0)(11,0)(11,0)(10,0)(11,0)(11,0) &=& \psi(\Omega^{\psi(\Omega^{\psi(\psi(\omega^{\omega^2 \cdot 3}))})}) \\ X(10,0)(11,0)(11,0)(10,0)(11,0)(11,0)(10,0)(11,0)(10,0)(11,0)(10,0)(11,0) &=& \psi(\Omega^{\psi(\Omega^{\psi(\psi(\omega^{\omega^2 \cdot 3+\omega \cdot 3}))})}) \\ X(10,0)(11,0)(11,0)(10,0)(11,0)(11,0)(10,0)(11,0)(10,0)(11,0)(10,0)(10,0)(10,0) &=& \psi(\Omega^{\psi(\Omega^{\psi(\psi(\omega^{\omega^2 \cdot 3+\omega \cdot 2+3}))})}) \\ \end{eqnarray*}
Calculation beyond Bachman-Howard ordinal[]
The author wrote following result.
\begin{eqnarray*} (0,0)(1,1)(2,2)(0,0) &=& \psi(\psi_1(0))+1 \\ (0,0)(1,1)(2,2)(1,0) &=& \psi(\psi_1(0)) \omega \\ (0,0)(1,1)(2,2)(2,0) &=& \psi(\psi_1(0) \omega) \\ (0,0)(1,1)(2,2)(3,0) &=& \psi(\psi_1(\omega)) \\ (0,0)(1,1)(2,2)(3,0)(4,0) &=& \psi(\psi_1(\omega^\omega)) \\ (0,0)(1,1)(2,2)(3,0)(4,1) &=& \psi(\psi_1(\psi(0)))=\psi(\psi_1(\epsilon_0)) \\ (0,0)(1,1)(2,2)(3,1) &=& \psi(\psi_1(\Omega)) \\ (0,0)(1,1)(2,2)(3,2) &=& \psi(\psi_1(\Omega_2)) \\ (0,0)(1,1)(2,2)(3,3) &=& \psi(\psi_1(\psi_2(0))) \\ (0,0)(1,1)(2,2)(3,3)(4,4) &=& \psi(\psi_1(\psi_2(\psi_3(0)))) \\ (0,0)(1,1)(2,2)(3,3)...(9,9) &=& \psi(\psi_1(\psi_2(\psi_3(\psi_4(\psi_5(\psi_6(\psi_7(\psi_8(0))))))))) \\ \end{eqnarray*}
Therefore, in the loop of "for D=0 to 9" to "next", \(C=f_{\vartheta(\Omega_\omega)}(C)\) is calculated. Repetition of this loop 10 times results in \(f_{\vartheta(\Omega_\omega)+1}(10)\).
Verification code of C[]
Verification of C (.txt extention) shows calculation process. It is modified from original algorithm as follows.
- D loop eliminated
- C is set as constant 2 and does not change
- Calculation stops when the length of the sequence exceeds maxlength
The result is as follows.
- (0,0)(1,1)
- (0,0)(1,1)(1,1)
- (0,0)(1,1)(2,0)
- (0,0)(1,1)(2,1)
- (0,0)(1,1)(2,2)
- (0,0)(1,1)(2,2)(3,3)
- (0,0)(1,1)(2,2)(3,3)(4,4)
Sources[]
- ↑ First version of BASIC program
- ↑ Modified version of BASIC program
- ↑ Name of the system and the number
- ↑ The author's calculation (154-160, 164-169, 174-184)