Stavo solo leggendo un'altra spiegazione del problema dell'arresto, e mi ha fatto pensare che tutti i problemi che ho visto come esempi comportano sequenze infinite. Ma non uso mai sequenze infinite nei miei programmi - impiegano troppo tempo. Tutte le applicazioni del mondo reale hanno limiti inferiori e superiori. Anche i real non sono realmente reali - sono approssimazioni memorizzate come 32/64 bit ecc.
Quindi la domanda è, c'è un sottoinsieme di programmi che può essere determinato se si fermano? È abbastanza buono per la maggior parte dei programmi. Posso costruire un insieme di costrutti linguistici che posso determinare "l'haltability" di un programma. Sono sicuro che questo è stato studiato da qualche parte prima quindi qualsiasi suggerimento sarebbe apprezzato. La lingua non sarebbe completa, ma esiste qualcosa come la versione completa che è abbastanza buona?
Naturalmente, un tale costrutto dovrebbe escludere la ricorsione e i loop non limitati durante lo sviluppo, ma posso scrivere un programma senza quelli abbastanza facilmente.
La lettura dallo standard input come esempio dovrebbe essere limitata, ma è abbastanza facile - limiterò il mio input a 10.000.000 caratteri ecc., a seconda del dominio del problema.
tia
[Aggiornamento]
Dopo aver letto i commenti e le risposte, forse dovrei riaffermare la mia domanda.
Per un dato programma in cui tutti gli input sono limitati puoi determinare se il programma si ferma. In tal caso, quali sono i limiti della lingua e quali sono i limiti dell'insieme di input. L'insieme massimo di questi costrutti determinerebbe un linguaggio che può essere dedotto per fermarsi o meno. C'è qualche studio che è stato fatto su questo?
[Aggiornamento 2]
ecco la risposta, è sì, nel lontano 1967 da link
Che il problema dell'arresto può essere almeno teoricamente risolto per uno stato finito i sistemi sono stati già discussi da Minsky nel 1967 [4]: "... qualsiasi macchina a stati finiti, se lasciata completamente a se stessa, cadrà alla fine in a schema periodico perfettamente periodico. La durata di questo pattern ripetuto non può superare il numero di stati interni della macchina ... "
(e quindi se ti attacchi a macchine di turing finite, allora puoi costruire un oracolo)