Considere o problema de pegar uma máquina de Turing de entrada e determinar se a célula final é uma ou após o término da computação. Nos casos em que ele escreve algo mais ou não pára, você pode dar qualquer resposta (mas você precisa parar e dar alguma resposta em todas as entradas).
Esse problema é indecidível? Meu intestino diz que deveria ser, mas não consigo encontrar uma redução no problema da parada. Dada uma máquina de Turing que pode ou não parar, podemos configurá-la para terminar com no caso de parar, mas não podemos terminar com nada no caso sem interrupção, de modo que o oráculo poderia simplesmente dizer neste caso, sem ter que descobrir se de fato a máquina para.
Observe que uma redução na outra direção é simples; se você puder resolver o problema de parada, com uma TM que termine com ou , substituiremos a etapa de escrita por um loop infinito para criar uma nova TM. Se a nova TM parar, dizemos "ele escreve um " e, se não pára, dizemos "ele escreve um ". É garantido que esta resposta esteja correta desde que a MT pare com ou , para que possamos resolver o problema original.
haltify
escolherá o resultadogood()
e, em ambos os casos, será auto-consistente, mas ainda assim retornará porque (por magia vodu)haltify(good)
pára, por isso não é realmente um loop infinito, mas uma restrição sobre o responda. (Na realidade, a maneira de implementarhaltify
é apenas para executar o argumento, caso em que tantogood
eevil
são salvos de contradição por divergentes, mas então é claro que somos obrigados a permitirhaltify
a divergir, o que frustra o ponto.)