Вызов
Напишите программу P, не требующую ввода данных, такую, чтобы предложение «выполнение P в конечном итоге завершается» не зависит от арифметики Пеано .
Формальные правила
(Если вы математический логик, который считает приведенное выше описание слишком неформальным.)
В принципе, можно преобразовать некоторую универсальную машину Тьюринга U (например, ваш любимый язык программирования) в арифметическую формулу Пеано HALT над переменной p , где HALT ( p ) кодирует предложение « U заканчивается в программе ( кодируется по Гёделю ) р ». Задача состоит в том, чтобы найти p таким, чтобы ни HALT ( p ), ни ¬HALT ( p ) не могли быть доказаны в арифметике Пеано.
Вы можете предположить, что ваша программа работает на идеальной машине с неограниченной памятью и целыми числами / указателями, достаточно большими для доступа к ней.
пример
Чтобы увидеть, что такие программы существуют, одним примером является программа, которая исчерпывающе ищет арифметическое доказательство Пеано 0 = 1. Арифметическое Пеано доказывает, что эта программа останавливается тогда и только тогда, когда арифметика Пеано не соответствует. Поскольку арифметика Пеано непротиворечива, но не может доказать свою непротиворечивость , она не может решить, останавливается ли эта программа.
Однако есть много других предложений, не зависящих от арифметики Пеано, на которых вы могли бы основывать свою программу.
мотивация
Эта проблема была вдохновлена новой работой Yedidia and Aaronson (2016), в которой демонстрируется машина Тьюринга с 7 918 состояниями, чье недопущение не зависит от ZFC , гораздо более сильной системы, чем арифметика Пеано. Вы можете быть заинтересованы в его цитировании [22]. Конечно, для этой задачи вы можете использовать ваш язык программирования вместо реальных машин Тьюринга.
x = 1.0; while (x) { x = x / 2.0; }
действительно очень быстро останавливается.Ответы:
Haskell, 838 байт
«Если вы хотите что-то сделать,…»
объяснение
Эта программа непосредственно ищет арифметическое доказательство Пеано 0 = 1. Поскольку PA согласовано, эта программа никогда не завершается; но так как PA не может доказать свою собственную последовательность, нетерминация этой программы не зависит от PA.
T
это тип выражений и предложений:A P
представляет собой предложение ∀ x [ P ( x )].(V 1 :$ P) :$ Q
представляет собой предложение Р → Q .V 2 :$ P
представляет предложения ¬ P .(V 3 :$ x) :$ y
представляет предложение х = у .(V 4 :$ x) :$ y
представляет натуральный х + у .(V 5 :$ x) :$ y
представляет собой натуральное x ⋅ y .V 6 :$ x
представляет собой натуральное S ( x ) = x + 1.V 7
представляет естественный 0.В среде с i свободными переменными мы кодируем выражения, предложения и доказательства в виде целочисленных матриц 2 × 2 [1, 0; а , б ], следующим образом:
Остальные аксиомы кодируются численно и включаются в исходную среду Γ :
Доказательство с матрицей [1, 0; , Ь ] может быть проверена с учетом только левый нижний угол A (или любое другое значение конгруэнтно с по модулю б ); другие значения позволяют составлять доказательства.
Например, вот доказательство того, что сложение коммутативно.
Вы можете проверить это с помощью программы следующим образом:
Если бы доказательства были недействительными, вы бы получили пустой список.
источник