海苔テーブルは数学の標準公理システムに終了することが示されていないプログラムの例を提供ZFC 1は非常に巨大基数公理を前提としたときに終了しますけど。
前書き
古典的なLaverテーブルは、基になるセットと、アイデンティティーを満たし、どこで、どこで満たす操作を行うユニークな有限代数です。An
{1,...,2n}
*
x * (y * z)=(x * y) * (x * z)
x*1=x+1
x<2n
2n*1=1
古典的な海苔テーブルの詳細については、Patrick Dehornoyの書籍Braids and Self-Distributivityを参照してください。
チャレンジ
1*32
従来のLaverテーブルで計算し、n
with が見つかったときに正確に終了する最短のコード(バイト単位)は何ですか?言い換えると、with が見つかった場合にのみプログラムは終了しますが、それ以外の場合は永久に実行されます。1*32<2n
n
1*32<2n
動機
ランクにランクカーディナル(また、I3-カーディナルと呼ばれる)は、非常に大きい無限のレベルと1つのランクにランクカーディナルの存在を前提とした場合、その後、一つ一つがない場合よりも多くの定理を証明することができますランクからランクへの枢機existenceの存在を想定します。ランクからランクへの枢機inalが存在する場合、古典的な海苔の表があります。ただし、ZFCでの既知の証拠はありません。さらに、最小の場所がより大きいことが知られています(アッカーマン関数は急速に成長する関数であるため、これは非常に大きな数です)。したがって、このようなプログラムは非常に長い時間続きます。An
1*32<2n
1*32<2n
n
1*32<2n
Ack(9,Ack(8,Ack(8,254)))
Ack
プログラムが標準の公理システムZFCを使用して終了するかどうかはわからないが、プログラムが最終的にはるかに強力な公理システム、つまりZFC + I3で終了することがわかるように、プログラムがどれくらい短く書けるかを見たいです。この質問は、スコットアーロンソンの最近の投稿に触発されたもので、アーロンソンとアダムイディディアが8000未満の状態でチューリングマシンを構築したため、ZFCはチューリングマシンが終了しないことを証明できませんが、大きな基数仮説を仮定しても終了しないことがわかっています。
古典的な海苔表の計算方法
海苔のテーブルを計算する場合には、代数であるという事実を使用することが通常便利である、我々が持っているすべてのためにあるの。An
2n * x=x
x
An
次のコードは、古典的な海苔表を計算します An
#table(n、x、y)はA nに x * yを返します table:= function(n、x、y) x = 2 ^ nの場合、yを返します。 elif y = 1の場合、x + 1を返します。 それ以外の場合は、table(n、table(n、x、y-1)、x + 1)を返します。fi; 終わり;
たとえば、入力table(4,1,2)
はを返し12
ます。
のコードtable(n,x,y)
はかなり非効率的であり、妥当な時間内にLaverテーブルでのみ計算できます。幸いなことに、古典的な海苔の表を計算するアルゴリズムは、上記のものよりもはるかに高速です。A4
Ack(9,Ack(8,Ack(8,254)))
は、最初の行の期間が 32 である最初のテーブルの下限であることを証明しませんでした1*16 < 2^n
。
table(n,x,y)
、定数と外側のループを設定するには25〜30の状態が必要だと思います。esolangs.orgで見つけられるTMの直接的な表現はesolangs.org/wiki/ScripTurのみであり、実際にはそれほどゴルフではありません。