この記事は腐りかけです[]
概要[]
私が作り出したネスト構造の「表記ネストベース」とは何かについて、解説します。
ベース[]
まず、ベースとは何かについて、私なりの考え方(?)を解説します。
一般化したものは難しくて書けないので、雰囲気を掴んでもらいます。
2項演算f(a,b)があったとします。このとき、別の2項演算g(a,b)を用いて、
f(a,b+1) = g(f(a,b),c)
とかけるとき、gをfに対するベースと呼びます(イメージです)。
つまり、するものと、されるものがあったときに、するものに1を足すために必要な操作をベースと呼んでいるわけですね。
例を見ていきます。最初は簡単なものから行きましょう。足し算のベースについて考えます。ベースのイメージを掴みやすくするために、便宜上()で括っています。
(a+(b+1)) = (a+b)+1
従って、足し算のベースは1を足すことになります。何だか当たり前のことをさも難しく言っているだけのような気さえします。
では、掛け算ではどうでしょうか。
(a×(b+1)) = (a×b)+a
従って、掛け算のベースはされるものを足すことになります。まだ簡単ですね。
同様に、冪やテトレーションなどについてもベースを考えることができます。しかし、普通これらの演算についてベースを考えることはないと思います。それでは、ベースはどこで使われているのか、いつ考えるのか・・。
そう、OCFです。OCFには加法ベース、冪ベース、φベースなどがありますね。
加法ベースOCFでは、例えば、
ψ(Ω+1) = ψ(Ω)+ψ(Ω)+…
ですし、冪ベースOCFでは、例えば、
ψ(Ω+1) = ψ(Ω)^ψ(Ω)^…
です。さあ、これでベースについて何となくイメージを掴んでもらえたかと思います。私は、今までこのベースについて研究してきました。ベースの一体何を研究するのかというと、もちろんより強いベースの構成方法についてです。つまるところ、()の中に1を足すために必要な操作をいかに強く出来るか、ということを研究するのです。
これで、ようやく表記ネストベースの解説に入れます。表記ネストベースは、その前身にネストベースがあります。両方ともOCFライクな概念(OCFにおける○○ベースと同じようなもの)です。首尾よくいくために、まずはネストベースについて解説します。
ネストベース[]
ネストベースは、読んで字のごとく、ネストすることがベースとなっています。ネストベースを実際に使用している私の表記「ESSSver.15」を例にして解説していきます。
まずは、ネストベースそのものについてみていきましょう。ネストをベースにしているのですから、例えば、
ψ(Ω×ω)を展開すると何かしらのネストになるはずです。
と、ここで「オイオイ、ちょっと待て」となった方がいると思います。いますよね?いるんです!
というのも、ψ(Ω×ω)って、どこにも+1されてる感がありません。これはどういうことでしょう?見方を変える必要がありそうです・・。
そこで、ψ(Ω×ω)をψの下付きだけで表してみましょう。(このψは多分UNOCFです。え?UNOCFはill-definedだろって?それは作った奴と広めた奴に言ってください!)
すると、
ψ(Ω×ω) = ψ_0(ψ_1(ψ_0(0)))
となります。ψ_1の()の中にψ_0(0)、つまり1を足していますね。では、これをどうネストに展開すればいいのでしょう?目標は強いベースを作ることですから、思い切ってψ_0()とψ_1()で構成可能な最も強いネストに展開しましょう!
ψ_0(ψ_1(ψ_0(0))) = ψ_0(ψ_1(ψ_1(ψ_1(...))))
・・。「君は底なしの馬鹿だ」なんて思わないでください。これに問題があるのは明らかで、そんなことは百も承知。もちろんこの循環論法を解決する方法を考えたウホ。
同じ場所に展開しないようにすれば良いだけの話なので新たに[]を取り付けて、こっちに展開するようにしましょう。つまり、
ψ_0(ψ_1(ψ_0(0))) = ψ_0(ψ_1(0)[ψ_1(0)[ψ_1(0)[...]]])
とします。これでOKです。後は、[]の構造の構成方法と展開を考えてあげればネストベースが完成します。
ESSSver.15では、ψ_m()[]の代わりにm()[]を使います。先の例だと、
0(1(0(0)[0])[0])[0] = 0(1(0)[1(0)[1(0)[...]]])[0]
となります。おっと、[]の展開方法をまだ与えていませんでしたね。実は[]の展開には加法ベースを使います。つまり、
0(1(0)[0(0)[0]])[0] = 0(1(0)[0]+1(0)[0]+...)[0]
となります。言い換えると、これがψ(Ω×ω)と等しくなります。この例ではネストベースを1(0)[0]から使い始めていますが、もちろん0(0)[0]からネストベースを使うことも出来ます。
ESSSver.15はBOのネスト構造にこのネストベースを取り付けたもので、rpakrさんによる解析では、UNOCFでψ(Ι_ω)の強さになりました。
以下も参照してみてください。
rpakr氏によるESSSver.15の解析。↓ https://docs.google.com/spreadsheets/d/1Igq1gmYuhZp9DyxRkX3F0eZNyG09U0bf1Tm8NLr3fXg/edit?usp=drivesdk
表記ネストベース[]
さあ、ここからが本題です。表記ネストベースを見ていきましょう。ネストベースより強いベースを考えたとき、その表記そのものの限界をベースにしたら強いんじゃないかということで生まれた概念です。今までの結果から推論すれば、表記ネストベースは表記ネストをベースにしていると読み解けるでしょう。しかし、ネストは分かりますが、表記っていったい何のことでしょう?ちょっと難しいので、まずは簡単な例から行きましょう。
例えば、ε_0の強さを持つ、おなじみのネスト構造があったとしましょう。念のため概要だけ書いておくと、
0 = 0
(0) = 1
(0)+(0) = 2
((0)) = ω
((0))+((0)) = ω×2
((0)+(0)) = ω^2
(((0))) = ω^ω
(((0))+(0)) = ω^(ω+1)
(((0)+(0))) = ω^ω^2
((((0)))) = ω^ω^ω
(((...))) = ε_0
といった具合です。加法ベースのネスト構造ですね。
この表記に表記ネストベースを取り付けてみましょう。この、表記ネストベースの元となる表記を「0-表記ネストベース」と呼びます。この例では、言い換えると、
0-表記ネストベース=加法ベース
となります。0-表記ネストベースに表記ネストベースを取り付けると、「1-表記ネストベース」になります。早速取り付けてみましょう!ESSSver.15のように、[]が出てきます。[]に対しては加法ベースで、[]内の()は0-表記ネストベースです。ただし、[]によるネストが許されるため、[]内での((...))はε_0よりも強くなります。少し特異な動きになるので注意が必要です。(表記ネストベースの「ネスト」の要素です。)
0 = 0
(0)[0] = 1
(0)[0]+(0)[0] = 2
(0)[(0)[0]] = ω
(0)[(0)[0]]+(0)[(0)[0]] = ω×2
(0)[(0)[0]+(0)[0]] = ω^2
(0)[(0)[(0)[0]]] = ω^ω
(0)[(0)[(0)[(0)[...]]]] = ε_0
[]によるネストの限界になりました。これが「表記ネストベース」の「ネスト」にあたる要素です。圧縮はネストベースと同様になりますが、「表記ネストベース」の「表記」にあたる要素があるために、圧縮がずれます。つまり、
(0)[(0)[(0)[(0)[...]]]] = ((0)[0])[0]
にならずに、
(0)[(0)[(0)[(0)[...]]]] = (0)[((0)[0])[0]]
になります。ここからはUNOCFを使いましょう。
(0)[((0)[0])[0]] = ψ(Ω) = ε_0
(0)[((0)[0])[0]+(0)[0]] = ψ(Ω+1)
(0)[((0)[0])[0]+(0)[(0)[0]]] = ψ(Ω+ω)
(0)[((0)[0])[0]+((0)[0])[0]] = ψ(Ω+ψ(Ω))
ここで、「いや、ψ(Ω+ψ(Ω))は(0)[((0)[0])[0]+(0)[((0)[0])[0]]]にした方が強くないか?」と思った人がいるのではないでしょうか。残念ながら、それを許すと、
1. 無限ループが発生する。
2. 極限にしたときに圧縮が出来ない(無理やりしてもいいが不自然であるため、無限ループが発生する確率を上げてしまう)。
のいずれかの問題が起こってしまいます。今回は、元となる表記にΩに相当するものが無いのが原因ですが、相当するものがある表記だったとしても、この手の問題が起こりうる形にならないかの注意をする必要があります。
(0)[((0)[0])[(0)[0]]] = ψ(Ω+ψ(Ω+1))
(0)[((0)[0])[(0)[(0)[0]]]] = ψ(Ω+ψ(Ω+ω))
(0)[((0)[0])[((0)[0])[0]]] = ψ(Ω+ψ(Ω+ψ(Ω)))
(0)[((0)[0]+(0)[0])[0]] = ψ(Ω×2)
(0)[((0)[(0)[0]])[0]] = ψ(Ω×ω)
(0)[((0)[((0)[0])[0]])[0]] = ψ(Ω×ψ(Ω))
(0)[((0)[((0)[(0)[0]])[0]])[0]] = ψ(Ω×ψ(Ω×ω))
(0)[((0)[((0)[((0)[0])[0]])[0]])[0]] = ψ(Ω×ψ(Ω×ψ(Ω)))
(0)[(((0)[0])[0])[0]] = ψ(Ω^2) = ζ_0
(0)[(((0)[0]+(0)[0])[0])[0]] = ψ(Ω^3) = η_0
(0)[(((0)[(0)[0]])[0])[0]] = ψ(Ω^ω) = φ(ω,0)
(0)[(((0)[((0)[0])[0]])[0])[0]] = ψ(Ω^ψ(Ω))
(0)[(((0)[(((0)[0])[0])[0]])[0])[0]] = ψ(Ω^ψ(Ω^2))
(0)[((((0)[0])[0])[0])[0]] = ψ(Ω^Ω)
(0)[(…)[0]] =ψ(Ω^Ω^…) ()が2^n回ネストのとき、Ω↑↑nというめんどくさい対応…
[]内で表記が限界になったので、ここでようやく表記ネストベースのお出ましです。
(0)[(...)] = ((0)[0])[0]
と圧縮されます。見事に()内に1が足されました!これで、表記ネストベースの意味が分かってきたのではないでしょうか。つまり、
((0)[0])[0] = ψ(Ω_2) = BHO
ですね。ちなみに、限界は
(((...)[0])[0])[0]
ですが、正直なところもうこれ以上解析したくないです。勘弁してください。
ところで、1-表記ネストベースに表記ネストベースを取り付けることも出来ます。それは「2-表記ネストベース」と呼ばれます。これは、
(0)[(0)[(0)[(0)[...]]]] = (0)[((0)[0])[0]]
にならずに、
(0)[(0)[(0)[(0)[...]]]] = (0)[(0)[((0)[0])[0]]]
になります。つまり、[]のところで1-表記ネストベースが構成されます。従って、
(0)[(...)] = ((0)[0])[0]
が1-表記ネストベースの限界と一致します。大変ですね。同様に、3-表記ネストベースでは、
(0)[(0)[(0)[(0)[...]]]] = (0)[(0)[((0)[0])[0]]]
にならずに、
(0)[(0)[(0)[(0)[...]]]] = (0)[(0)[(0)[((0)[0])[0]]]]
になります。つまり、[]のところで2-表記ネストベースが構成されます。従って、
(0)[(...)] = ((0)[0])[0]
が2-表記ネストベースの限界と一致します。大変ですね。
さて、そうするとn-表記ネストベース(略してn-thとします)までは構成できますが、ω-thや(ω+1)-thはどう構成すれば良いのでしょうか?
表記ネストベースの取り付けに関して、その基本列を見ていきましょう。
0-th (0)[(0)[(0)[(0)[...]]]] = ((0)[0])[0]
1-th (0)[(0)[(0)[(0)[...]]]] = (0)[((0)[0])[0]]
2-th (0)[(0)[(0)[(0)[...]]]] = (0)[(0)[((0)[0])[0]]]
3-th (0)[(0)[(0)[(0)[...]]]] = (0)[(0)[(0)[((0)[0])[0]]]]
ですから、表記ネストベースを取り付けるごとに、[]に対するネストが行われています。
以下WIP