Estaba leyendo otra explicación del problema de detención, y me hizo pensar que todos los problemas que he visto como ejemplos involucran secuencias infinitas. Pero nunca uso secuencias infinitas en mis programas, toman demasiado tiempo. Todas las aplicaciones del mundo real tienen límites inferiores y superiores. Incluso los reales no son realmente reales: son aproximaciones almacenadas como 32/64 bits, etc.
Entonces la pregunta es, ¿hay un subconjunto de programas que se puedan determinar si se detienen? ¿Es lo suficientemente bueno para la mayoría de los programas? ¿Puedo construir un conjunto de construcciones de lenguaje que pueda determinar la 'capacidad de detención' de un programa? Estoy seguro de que esto se ha estudiado en algún lugar antes, por lo que cualquier indicador sería apreciado. El lenguaje no estaría completo, pero ¿existe algo así como casi completo que sea lo suficientemente bueno?
Naturalmente, tal construcción tendría que excluir la recursión y los bucles while ilimitados, pero puedo escribir un programa sin esos fácilmente.
La lectura de la entrada estándar como ejemplo tendría que estar limitada, pero eso es bastante fácil: limitaré mi entrada a 10,000,000 de caracteres, etc., dependiendo del dominio del problema.
tia
[Actualizar]
Después de leer los comentarios y las respuestas, tal vez debería repetir mi pregunta.
Para un programa dado en el que todas las entradas están limitadas, ¿puede determinar si el programa se detiene? Si es así, ¿cuáles son las restricciones del idioma y cuáles son los límites del conjunto de entrada? El conjunto máximo de estas construcciones determinaría un lenguaje que puede deducirse para detenerse o no. ¿Hay algún estudio que se haya hecho sobre esto?
[Actualización 2]
Aquí está la respuesta, es sí, desde 1967 en http://www.isp.uni-luebeck.de/kps07/files/papers/kirner.pdf
Minsky ya argumentó en 1967 que el problema de la detención puede resolverse al menos teóricamente para los sistemas de estado finito [4]: “... cualquier máquina de estado finito, si se deja completamente sola, eventualmente caerá en un período perfectamente periódico patrón repetitivo La duración de este patrón repetitivo no puede exceder el número de estados internos de la máquina ... "
(y si te apegas a máquinas de turing finitas, entonces puedes construir un oráculo)