Ocorreu-me uma pergunta sobre o problema da interrupção e não consegui encontrar uma boa resposta on-line, imaginando se alguém poderia ajudar.
É possível que o problema da parada seja decidível para qualquer TM em qualquer entrada, desde que a entrada não seja a própria TM? Basicamente:
Halts(TM, I)
IF TM == I:
Undecidable, return a random result/throw an exception, whatever
ELSE:
Solve the problem
Halts'(X)
IF Halts(X, X):
Loop infinitely
ELSE:
Print 'done'
Aparentemente, isso resolve a contradição. Quando chamamos os paradoxais de Halts de '(Halts'), não podemos esperar um comportamento consistente, mas todas as outras chamadas para Halts (e Halts) são legítimas e solucionáveis.
Eu entendo que isso é altamente intuitivo. Se algum padrão nos bits pudesse revelar o comportamento de todos os programas possíveis, por que desmoronaria repentinamente quando a TM e a entrada correspondessem? Mas podemos matematicamente eliminar isso como uma possibilidade?
E esse problema de parada reduzida não seria nada interessante. Mesmo que houvesse algum programa significativo que tivesse seu próprio código como entrada, ele poderia ser reescrito trivialmente para trabalhar com entradas ligeiramente diferentes. É claro que essa sugestão torna ainda menos compreensível por que uma solução de parada poderia existir com essa ressalva, mas novamente, podemos realmente eliminar matematicamente essa possibilidade?
Obrigado por qualquer ajuda.