Estoy tratando de encontrar una manera de explicar la idea de la prueba del problema de detención de la manera más accesible posible (para estudiantes universitarios de CS). El argumento más simple que he encontrado es este ; este es precisamente el estilo de tratamiento que busco. Sin embargo, la autorreferencia (en particular, verificar si un programa se detiene) no es la más didáctica.
Lo que me pregunto, como un bosquejo de prueba, es por qué no podríamos simplificar aún más y decir: si asumimos un programa H(P,I)
para el Problema de detención que se detiene con verdadero si se P(I)
detiene y se detiene con falso de lo contrario, entonces podríamos crear un programa de la forma:
def Q(J):
if H(Q,J) then loop forever
else halt
... que es un programa válido si y solo si el Problema de detención es un programa válido. Entonces podemos preguntar: ¿para qué debería H(Q,J)
devolver cualquier valor arbitrario J
? Vemos una contradicción en ambas posibilidades, y concluimos que, dado que la existencia de H
nos permite construir el programa contradictorio Q
, H
no puede existir un programa de la forma .
Todavía hay alguna referencia propia aquí en que el programa Q
verifica si se detiene o no en la entrada actual (y hace lo contrario), pero para mí, esto parece mucho más intuitivo que configurar una situación en la que necesitamos una llamada del forma P(P)
o H(P,P)
, etc. Sin embargo, no he visto este argumento más simple utilizado, y creo que habría sido si fuera válido. Por eso mis preguntas son:
- ¿Es suficiente el argumento anterior como prueba (bosquejo) del problema de detención?
- Si es así, ¿por qué tantos argumentos van con un paso confuso de la forma
P(P)
oH(P,P)
? (¿Es solo para eliminar la "entrada" sin importancia de la ecuación?) - Si no, ¿qué falta?
- Si es así, ¿por qué tantos argumentos van con un paso confuso de la forma
Hay una variedad de preguntas relacionadas con este tema, como:
- Problema de detención sin autorreferencia
- ¿Existe una prueba más intuitiva de la indecidibilidad del problema de detención que la diagonalización?
También encontré mención de la prueba basada en la paradoja de Berry, que es bastante atractiva. Aún así, todavía no he logrado convencerme de si el argumento específico anterior funciona o no (aunque sea solo por mi propia comprensión; siento que tal vez me estoy perdiendo algo estúpido y me gustaría saber de qué se trata).