Solo para el registro, la prueba estándar de la indecidibilidad del problema de detención se basa en la misma idea que quines: que es posible escribir un programa cuyo término se evalúe en el código fuente de todo el programa. Luego, si hubiera una función halts
que, dado el código fuente de un programa, devuelva True si ese programa se detuvo en todas las entradas y False, de lo contrario, este sería un programa legal:
prog() = if halts "prog" then prog() else ()
donde "prog"
habría alguna expresión que evaluara el código fuente para prog
; sin embargo, puede ver rápidamente que se prog
detiene (para todas las entradas) si no se detiene, lo cual es una contradicción. Nada en esta prueba se basa en E / S de ninguna manera (¿necesita E / S para escribir una quine?).
Por cierto, es posible que desee buscar "E / S basadas en cuadros de diálogo" para obtener más evidencia de que la E / S es completamente irrelevante para su problema (básicamente, los programas que hacen E / S pueden reducirse a programas que toman datos como argumentos explícitos (explícitos) y resultados de retorno como resultados adicionales (explícitos) en un lenguaje vago). Desafortunadamente, no puedo encontrar una página razonable, imparcial (o pro-diálogo) en la web en este momento.