(Nota: Por comodidad, estoy expresando esto en términos de programas de ordenador en lugar de máquinas de Turing). Consideremos un programa de ordenador P que hace lo siguiente:
-
Pide al usuario que introduzca el código de un programa informático
-
Consulta un oráculo para saber si hay alguna posibilidad de que no se detenga si ejecuta el programa informático en cuestión.
-
Si el oráculo le dice que no puede detenerse si ejecuta el programa, entonces da la salida "ERROR" y se detiene.
-
Si el oráculo le dice que está garantizado que se detenga si ejecuta el programa, entonces ejecuta el programa.
Ahora la pregunta es, ¿está garantizado que P se detenga? Supongamos que está garantizado que se detenga, y dejemos que el código para P sea c. Entonces el usuario puede ejecutar P, y cuando se le pida puede introducir c, y entonces P se ejecutará de nuevo, y cuando se le pida el usuario puede introducir de nuevo c, y entonces P se ejecutará de nuevo, y el usuario puede introducir c, etc. Así que no se garantiza que P se detenga.
Pero si no se garantiza que P se detenga, entonces si el usuario ingresa c, P simplemente emitirá "ERROR" y luego se detendrá. Por lo tanto, se garantiza que P se detenga. Entonces, ¿qué está pasando?
Cualquier ayuda será muy apreciada.
Gracias por adelantado.