Как черные дыры в информатике. Мы можем только знать, что они существуют, но когда у нас есть один из них, мы никогда не узнаем, что это один из них.
halting-problem
correctness-proof
Отакар Мольнар Лопес
источник
источник
if T is true then halt else loop forever
if T is true
?For each string S in the (countable) universe of possible strings: If S is a syntactically valid proof of T, halt.
Ответы:
Есть действительно такие программы. Чтобы доказать это, давайте предположим, что для каждой машины, которая не останавливается, есть доказательство, что она не останавливается.
Эти доказательства являются строками конечной длины, поэтому мы можем перечислить все доказательства длины меньше для некоторого целого числа s .s s
Затем мы можем использовать это для решения проблемы остановки следующим образом: Учитывая машину Тьюринга и вход x , мы используем следующий алгоритм:M Икс
Если останавливается на входе x , то он останавливается за некоторое конечное число шагов s , поэтому наш алгоритм завершается.M Икс s
Если не останавливается на входе x , то, по нашему предположению, есть некоторая длина доказательства s, где есть доказательство того, что M не останавливается. Так что в этом случае наш алгоритм всегда завершается.M Икс s M
Таким образом, у нас есть алгоритм, решающий проблему остановки, который всегда заканчивается. Но мы знаем, что этого не может быть, поэтому наше предположение о том, что всегда есть доказательство того, что мы не остановимся, должно быть ложным.
источник
Для более конкретного примера давайте предположим, что теория, которую мы используем для наших доказательств, имеет следующие (вполне разумные, IMO) особенности:
С этими допущениями следующая программа никогда не остановится, но не может быть доказана (в рамках теории, которую мы используем) не остановить:
Ключевой деталью здесь является первое предположение выше, а именно, что теория, которую мы используем для наших доказательств, непротиворечива. Очевидно, нам нужно принять это, чтобы наши доказательства чего-то стоили, но вторая теорема Гёделя о неполноте говорит о том, что для любой достаточно выразительной и эффективно аксиоматизированной теории мы не можем на самом деле доказать это (за исключением, возможно, в какой-то другой теории, последовательность которой мы тогда надо предполагать и тд и тп).
источник