Это полицейские и грабители Задача основана на определении языков и доказательстве того, что они выполнены по Тьюрингу.
Это нить полицейских. Нить грабителей здесь .
Менты
Как полицейский, вы подготовите две вещи:
Формальная спецификация языка программирования или другой вычислительной системы. (Вычислительные системы определены ниже.)
Доказательство того, что ваша система является полной по Тьюрингу, согласно несколько более строгому определению, приведенному ниже.
Вы опубликуете свою спецификацию своего языка, и грабители попытаются «взломать» его, доказав его полноту по Тьюрингу. Если ваша заявка не была взломана в течение одной недели, вы можете пометить ее как безопасную и опубликовать доказательство. (Ваш ответ может быть признан недействительным, если кто-то обнаружит ошибку в вашем доказательстве, если вы не можете это исправить.)
Это Популярность-конкурсТаким образом, победителем будет тот ответ, который набрал наибольшее количество голосов, и который не был взломан или признан недействительным. Задача открыта - я не приму ответ.
Ради этой задачи вычислительная система будет определена как четыре вещи:
«Набор программ»
P
. Это будет счетно бесконечный набор, например, строки, целые числа, двоичные деревья, конфигурации пикселей в сетке и т. Д. (Но см. Техническое ограничение ниже.)«Входной набор»
I
, который также будет счетным бесконечным набором и не обязательно должен быть таким же, какP
(хотя это может быть).«Выходной набор»
O
, который аналогично будет счетным бесконечным набором и может или не может быть таким же, какP
илиI
Детерминированная, механистическая процедура для получения выходного сигнала
o
из программыp
и вводаi
, гдеp
,i
иo
являются членамиP
,I
иO
соответственно. Эта процедура должна быть такой, чтобы ее можно было в принципе реализовать на машине Тьюринга или другой абстрактной модели вычислений. Процедура может, конечно, не остановиться, в зависимости от программы и ее ввода.
Наборы P
, I
и O
должны быть такими , что вы можете выразить их в виде строк вычислимым образом. (Для наиболее разумных вариантов это не будет иметь значения; существует это правило, запрещающее вам выбирать странные наборы, такие как набор машин Тьюринга, которые не останавливаются.)
Полнота по Тьюрингу будет определяться следующим образом:
- Для любой вычислимой частичной функции
f
отI
кO
, существует программаp
вP
таким образом, что даноp
и входi
, выход ,f(i)
еслиf(i)
имеет значение. (В противном случае программа не останавливается.)
Слово «вычислимый» в приведенном выше определении означает «может быть вычислено с использованием машины Тьюринга».
Обратите внимание, что ни правило 110, ни битовая циклическая метка не являются полными по Тьюрингу по этому определению, поскольку они не имеют требуемой структуры ввода-вывода. Лямбда-исчисление является полным по Тьюрингу, пока мы определяем I
и O
будем использовать церковные цифры . (Это не полная по Тьюрингу, если мы берем I
и O
будем лямбда-выражениями вообще.)
Обратите внимание, что вам не нужно предоставлять реализацию вашего языка, но вы можете включить один из них в свой ответ, если хотите. Однако вы не должны полагаться на реализацию для определения языка каким-либо образом - спецификация должна быть завершена сама по себе, и если между спецификацией и реализацией существует противоречие, это следует рассматривать как ошибку в реализации.