Primitive sequence number

Primitive sequence number is the large number made by Bashicu 2ch Large number thread Part.10 (archive) the program computing primitive sequence system (message No.109), its examples (No.135-140) and the article explaining it. The algorithm making primitive sequence number is called as Primitive sequence system, it is like Beklemishev's worm and it has the strength of \(f_{\epsilon_0}(n)\). The size of primitive sequence number is about \(f_{\epsilon_0+1}(10)\).

The Pair sequence system, which is the expansion of primitive sequence system into two rows, has the strength of \(f_{\psi(\Omega_{\omega})}(n)\). The expansion into three rows is called as Trio sequence system. The generalization of them are called as Bashicu matrix system. It has \(n\) rows. Their investigation is currently in progress.

Definition
The first definition of the primitive sequence number was posted into the communication website 2ch large number thread Part.10 as the pseudo code in BASIC language. After that, the definitions are maintained on the article Summary of the large number in BASIC Language in Wikia user blog.

Mathematical definition
Although the original definition is written in the pseudo code of BASIC language, It can be described in the mathematical definition as following:

Primitive sequence is a list of non negative integer \(S = (S_0, S_1, \ldots, S_k)\). Primitive sequence has the behavior as the function from a non negative integer \(n\) into a non negative integer, the value of \(S[n]\) is defined as below:
 * \( [n]=n \).
 * good part \(g\) and bad part \(b\) of the primitive sequence are defined as following: (\(i\) is the largest non negative integer which gives \(r<k\) and \(S_r<S_k\) in below.)
 * When \(r\) exists, let \(g\) and \(b\) be \(g=(S_0,\ldots,S_{r-1}),~b= (S_{r},\ldots,S_{k-1})\).
 * When \(r\) does not exists, let them be \(g=(S_0, \ldots, S_{k−1}),~b= \).
 * Let \(S[n]\) be \(S[n] = (g \frown b \underbrace{\frown b \frown \cdots \frown b}_{f(n) \mathrm{'s}~\frown b})[f(n)]\). Where, \(f(n)\) is \(f(n)=n^2\).

That's the definition of \(S[n]\).

\(\frown\) is the concatenation of the sequence, for example, \((0, 3, 2) \frown (1, 4, 5) = (0, 3, 2, 1, 4, 5)\). \(P^{10}(9)~(P(n)=(0,\cdots,n)[n])\) is defined as Primitive sequence number with the primitive sequence system above.

That is the definition modeled after Beklemishev's worm. Note that the position which make division of \(g\) and \(b\) is different from the one of Beklemishev's worm.

Explanation of definition
The easy explanation of finding \(r\) is, searching the number \(S_k-1\) from the right side of the sequence, the index of the one is found as \(r\). For example, in the case of \((0, 1, 2, 3, 3, 1, 2, 3, 2, 3, 2, \underbrace{2}_{=S_k})[2]\), the rightmost number \(S_k\) is \(2\), search \(1\) to the left side from there, the first found \(1\) is \(S_5=1\) so that \(r=5\). In this case \(b\) and \(g\) become \((\underbrace{0, 1, 2, 3, 3}_{=g}, \underbrace{1, 2, 3, 2, 3, 2}_{=b}, 2)[2]\). The bracket is \([2]\) and \(f(n)=n^2\), they give

\begin{eqnarray*} S[2]&=&g\frown b~\underbrace{\frown b\frown b\frown b\frown b}_{2^2~{\rm 個}}\\ &=&(\underbrace{0, 1, 2, 3, 3}_{=g}, \underbrace{1, 2, 3, 2, 3, 2}_{=b}, \underbrace{1, 2, 3, 2, 3, 2}_{=b}, \underbrace{1, 2, 3, 2, 3, 2}_{=b}, \underbrace{1, 2, 3, 2, 3, 2}_{=b}, \underbrace{1, 2, 3, 2, 3, 2}_{=b})[4]. \end{eqnarray*}

This \(S_r\) is often called as bad root.

その他
原始数列は、原始数列システムを一般化させたバシク行列の書式として、\(S = (S_0 S_1 \ldots S_k) = (S_0)(S_1) \ldots (S_k)\) と書かれることが多い.

原始数列の計算は、バシク行列計算機で計算出来る. たとえば、(0)(1)(2)(3)[2] の計算結果はこのようになる（Maximum length を増やすと、さらに増える）. どんどん数列が長くなり、計算が終わらないように見えるが、この数列は必ず最後に空の数列となって、\([n]\) が残る. そこで、\([n]=n\) として計算が終了する. \(f(n)=n\) として、(0)(1)(2)[2]を計算すると、計算が終了するまでを見ることができる.

また、アルゴリズムを若干変えることで、原始数列の計算をハーディー階層と一致させることができ、このように \(H_{\omega^\omega}(2) = 8\) を計算させることができる.

関数 \(P(n) = (0,1,2, \ldots, n)[n]\) を考えると、\(P(n)\)の増加速度は \(f_{\varepsilon_0}(n)\) 程度である. 原始数列数は \(P^{10}(9)\) であり、 \(f_{\varepsilon_0+1}(10)\) 程度である.

順序数との対応
原始数列は、\(\epsilon_0\) よりも小さい順序数と次のように対応づけることができる. 原始数列の計算では、計算が進むごとに必ず順序数が小さくなる. 順序数の無限降下列は存在しないため、必ず計算が終了する.

なお、原始数列と対応する順序数を表示するプログラムが作成されている.




 * 1) 順序数\(\alpha\)のヒドラツリーを書く. たとえば、上の図は Kirby and Paris (1982). の論文に解説されているように、\(\omega^{\omega^\omega+\omega^3}+\omega^{\omega^2+1}\) を表す.
 * 2) ルートノード (root) からスタートする.
 * 3) ルートノードから上に1つノードを上がる時には、数列の最後に新しい要素 0 を加える.
 * 4) ノードを1つ上に上がる時には、数列の最後に「最後尾の要素の値 + 1」の値の要素を加える.
 * 5) ノードの端点まで来たのでn個下の枝分かれのノードまで下がり、別の枝(segment)に進む時は、数列の最後に「最後尾の要素の値 - n + 1」の値の要素を加える.
 * 6) すなわち各項の数字は対応するノードのルートノードを起点とした高さから1を引いた値となる.
 * 7) 以下はこの図での対応のさせ方の例である: \(\omega^{\omega^\omega}\)の部分は(0,1,2,3)というように表される.  その後ノードを三本降りて、次の枝(segment)へ移り、(1,2,2,2)を得、列に追加される. その後、同様にして(0,1,2,2,1)が追加される. したがって、このヒドラツリーは数列(0,1,2,3,1,2,2,2,0,1,2,2,1)と対応する.
 * 8) この対応を次のように表す: \(\omega^{\omega^\omega+\omega^3}+\omega^{\omega^2+1} = (0,1,2,3,1,2,2,2,0,1,2,2,1)\).

以下が、例である.

\begin{eqnarray*} 1 &=& (0) \\ 2 &=& (0,0) \\ 3 &=& (0,0,0) \\ \omega &=& (0,1) \\ \omega+2 &=& (0,1,0,0) \\ \omega \cdot 2 &=& (0,1,0,1) \\ \omega^2 &=& (0,1,1) \\ \omega^2+\omega &=& (0,1,1,0,1) \\ \omega^3 &=& (0,1,1,1) \\ \omega^\omega &=& (0,1,2) \\ \omega^{\omega^\omega} &=& (0,1,2,3) \\ \omega^{\omega^{\omega^\omega}} &=& (0,1,2,3,4) \\ \omega^{\omega^{(\omega^\omega+1)}} &=& (0,1,2,3,4,2) \\ \omega^{\omega^{\omega^{\omega^\omega}}} &=& (0,1,2,3,4,5) \\ \end{eqnarray*}

出典
原始數列系統原始数列数