Actualmente estoy enseñando una clase sobre la computabilidad y recientemente cubrió la prueba de que la detención problema es indecidible. Sé de tres grandes a prueba de vías que se pueden utilizar aquí:
- Diagonalización - demostrar que si la detención problema se decidable, se podría construir una máquina que, si se ejecutan en sí mismo, se ve obligado a hacer lo contrario de lo que dice que hará.
- La recursividad teorema de - mostrar que si la detención problema se decidable, entonces se podría construir una máquina que obtiene su propia descripción, se determina si se detiene en su entrada, luego hace todo lo contrario.
- Reducción de - mostrar que algunas de las otras indecidible problema se reduce a detener el problema.
Aunque estoy totalmente de entender estas pruebas y piensan que son matemáticamente hermoso, muchos de mis estudiantes están teniendo problemas con ellos, porque ninguna de las pruebas directamente a la dirección de por qué no se puede saber si un programa va a detener. Nada de lo dispuesto en el por encima de los ingresos a lo largo de la línea de "cálculos pueden evolucionar de una manera que es tan complicado que no podemos predecir lo que va a suceder cuando empezamos a ellos" o "las máquinas no pueden introspectiva sobre sí mismos a ese nivel de detalle." A menudo me doy estas intuiciones a mis alumnos cuando les pregunten por qué el resultado se mantiene, pero no soy consciente de ningún pruebas de que forma.
¿Hay pruebas de la undecidability de la detención problema que directamente explorar por qué es imposible que un programa de decidir qué otro programa va a hacer?
Gracias!