Apenas para constar, a prova padrão da indecidibilidade do problema de parada se baseia na mesma idéia que o quines: que é possível escrever um programa cujo subdomínio é avaliado segundo o código fonte de todo o programa. Então, se houvesse uma função halts
que, dado o código-fonte de um programa, retornasse True se esse programa interrompesse todas as entradas e False caso contrário, este seria um programa legal:
prog() = if halts "prog" then prog() else ()
onde "prog"
haveria alguma expressão avaliada no código-fonte prog
; no entanto, você pode ver rapidamente queprog
para (para todas as entradas) se não parar, o que é uma contradição. Nada nesta prova depende de E / S de forma alguma (você precisa de E / S para escrever um quine?).
A propósito, você pode procurar em "E / S baseada em diálogo" para obter mais evidências de que a E / S é totalmente irrelevante para o seu problema (basicamente, programas que executam E / S podem ser reduzidos a programas que recebem entrada como argumentos funcionais (explícitos) e retornam a saída como resultados adicionais (explícitos) em uma linguagem lenta). Infelizmente, não consigo encontrar uma página razoável e sem preconceitos (ou pró-diálogo) na Web no momento.