Como buracos negros na ciência da computação. Só podemos saber que eles existem, mas quando temos um deles, nunca saberemos que é um deles.
halting-problem
correctness-proof
Otakar Molnár López
fonte
fonte
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.
Respostas:
De fato, existem programas como este. Para provar isso, vamos supor ao contrário que, para toda máquina que não para, há uma prova de que ela não para.
Estas provas são strings de comprimento finito, então podemos enumerar todas as provas de comprimento inferior para algum inteiro s .s s
Em seguida, podemos usar isso para resolver o problema de parada da seguinte forma: Dada uma máquina de Turing e uma entrada x , usamos o seguinte algoritmo:M x
Se parar na entrada x , então ele pára em um número finito de etapas s , então nosso algoritmo termina.M x s
Assim, temos um algoritmo que decide o problema da parada que sempre termina. Mas sabemos que isso não pode existir, portanto, nossa suposição de que sempre há uma prova de não parar deve ser falsa.
fonte
Para um exemplo um pouco mais concreto, vamos supor que a teoria que estamos usando para nossas provas tenha os seguintes recursos (bastante razoáveis, IMO):
Com essas suposições, o programa a seguir nunca será interrompido, mas não poderá ser provado (dentro do escopo da teoria que estamos usando) para não ser interrompido:
O detalhe chave aqui é a primeira suposição acima, a saber, que a teoria que estamos usando para nossas provas é consistente. Obviamente, precisamos assumir isso, para que nossas provas valham qualquer coisa, mas o segundo teorema da incompletude de Gödel diz que, para qualquer teoria razoavelmente expressiva e efetivamente axiomatizada, não podemos realmente provar isso (exceto possivelmente em alguma outra teoria, cuja consistência então precisa assumir, etc. etc.).
fonte