Есть действительно такие программы. Чтобы доказать это, давайте предположим, что для каждой машины, которая не останавливается, есть доказательство, что она не останавливается.
Эти доказательства являются строками конечной длины, поэтому мы можем перечислить все доказательства длины меньше для некоторого целого числа s .ss
Затем мы можем использовать это для решения проблемы остановки следующим образом: Учитывая машину Тьюринга и вход x , мы используем следующий алгоритм:MИкс
s := 0
while (True)
test if machine M halts on input x in s steps
look at all proofs of length s and see if they prove M doesn't halt on input x
set s := s + 1
Если останавливается на входе x , то он останавливается за некоторое конечное число шагов s , поэтому наш алгоритм завершается.MИксs
Если не останавливается на входе x , то, по нашему предположению, есть некоторая длина доказательства s, где есть доказательство того, что M не останавливается. Так что в этом случае наш алгоритм всегда завершается.MИксsM
Таким образом, у нас есть алгоритм, решающий проблему остановки, который всегда заканчивается. Но мы знаем, что этого не может быть, поэтому наше предположение о том, что всегда есть доказательство того, что мы не остановимся, должно быть ложным.
if T is true then halt else loop forever