Я просто читал еще одно объяснение проблемы остановки, и это заставило меня задуматься о том, что все проблемы, которые я видел, которые приведены в качестве примеров, включают в себя бесконечные последовательности. Но я никогда не использую бесконечные последовательности в своих программах - они занимают слишком много времени. Все приложения реального мира имеют нижнюю и верхнюю границы. Даже действительные числа не являются настоящими действительными значениями - это приблизительные значения, сохраняемые как 32/64 бита и т. Д.
Таким образом, вопрос в том, есть ли подмножество программ, которые можно определить, если они останавливаются? Это достаточно хорошо для большинства программ. Могу ли я создать набор языковых конструкций, которые я могу определить «ограничиваемость» программы. Я уверен, что это было изучено где-то раньше, поэтому любые указатели будут оценены. Язык не будет завершенным по Тьюрингу, но есть ли такая вещь, как почти полная по Тьюрингу, что достаточно хорошо?
Естественно, такая конструкция должна была бы исключить рекурсию и неограниченные циклы while, но я могу написать программу без них достаточно легко.
Чтение из стандартного ввода в качестве примера должно быть ограниченным, но это достаточно просто - я ограничу свой ввод до 10 000 000 символов и т. Д., В зависимости от проблемной области.
ТИА
[Обновить]
После прочтения комментариев и ответов, возможно, мне следует повторить свой вопрос.
Для данной программы, в которой все входы ограничены, вы можете определить, останавливается ли программа. Если да, каковы ограничения языка и каковы ограничения входного набора. Максимальный набор этих конструкций будет определять язык, который может быть выведен из режима остановки или нет. Есть ли какое-то исследование, которое было сделано по этому вопросу?
[Обновление 2]
вот ответ, это да, еще в далеком 1967 году с http://www.isp.uni-luebeck.de/kps07/files/papers/kirner.pdf
О том, что проблема остановки может быть, по крайней мере, теоретически решена для систем с конечным числом состояний, уже утверждал Минский в 1967 году [4]: «... любой конечный автомат, если он полностью предоставлен самому себе, в конечном итоге превратится в совершенно периодический повторяющийся узор. Продолжительность этого повторяющегося шаблона не может превышать количество внутренних состояний машины ... »
(и поэтому, если вы придерживаетесь конечных машин Тьюринга, вы можете создать оракула)