У таблицях Laver наведено приклади програм, за якими не було показано, що вони закінчуються в стандартній аксіоматичній системі математики ZFC, але вони припиняються, коли приймаються дуже великі кардіологічні аксіоми.
Вступ
Класичні столи Laver є єдиними кінцевими алгебри з основним безліччю і операція , яка задовольняє ідентичності і де для і де .An
{1,...,2n}
*
x * (y * z)=(x * y) * (x * z)
x*1=x+1
x<2n
2n*1=1
Більше інформації про класичні таблиці Лавер можна знайти у книзі «Коси та саморозповсюдження» Патріка Дехорного.
Виклик
Який найкоротший код (у байтах), який обчислюється 1*32
в класичних таблицях Laver і закінчується точно, коли він знаходить n
с ? Іншими словами, програма припиняється, якщо і тільки якщо вона знайде з, але в іншому випадку вона працює вічно.1*32<2n
n
1*32<2n
Мотивація
Ранг в-ранг кардинал (також званий I3-кардинал) є надзвичайно великим рівнем нескінченності і , якщо припустити існування кардинала рангу в-ранг, то один може довести більше теорем , ніж якби один не робить припустимо існування рангового кардинала. Якщо існує ранг в-ранг кардинала, тобто деяка класична таблиця умивальник де . Однак невідомо доказів того, що в 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 не може довести, що машина Тьюрінга не припиняється, але, як відомо, не припиняється, коли передбачається велика кардинальна гіпотеза.
Як обчислюються класичні таблиці Лавер
При обчисленні таблиць LAVER це, як правило , зручно використовувати той факт , що в алгебрі , у нас є для всіх в .An
2n * x=x
x
An
Наступний код обчислює класичну таблицю Laver An
# table (n, x, y) повертає x * y в A n таблиця: = функція (n, x, y) якщо x = 2 ^ n, тоді повертаємо y; elif y = 1, тоді повертаємо x + 1; інша таблиця повернення (n, таблиця (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, - це esolangs.org/wiki/ScripTur, і це насправді не так сильно.