Esiste un ragionevole sistema di prova automatizzato per i teoremi di TCS?


28

Supponiamo che volessi formalizzare la prova di Turing sul problema dell'arresto in modo che una macchina potesse controllarla. Alcuni dei noti sistemi di dimostrazione di teoremi automatizzati includono Mizar, Coq e HOL4. Ho scaricato e sperimentato Coq, ma non ha una libreria per macchine Turing. Ho pensato di codificarne uno da solo, ma ho trovato il tutorial carente e la lingua difficile da imparare.

La mia domanda è: esiste un proveratore di teoremi automatizzato che è generalmente bravo a provare i teoremi che coinvolgono le macchine di Turing? Considererei un prover di tale teorema "buono" se potesse formalizzare una prova dell'indecidibilità del problema di arresto usando librerie già esistenti. Lo prenderei ancora meglio se è relativamente facile da raccogliere. (Per la cronaca, di solito non ho difficoltà con i linguaggi di programmazione.)

Grazie,

Philip


Potresti voler controllare questa pagina ma l'elenco non include il problema di arresto.
Kaveh,

10
Oserei dire che è necessario persistere con qualcosa come Coq prima che possa sembrare naturale. E devi essere al terminale a risolvere i problemi, piuttosto che leggere il libro. Mettere le mani su "Prove del teorema interattivo e sviluppo del programma: Coq'Art: il calcolo delle costruzioni induttive" aiuterà. I tutorial di Coq: cis.upenn.edu/~bcpierce/sf e adam.chlipala.net/cpdt sono abbastanza buoni (anche se non mirano direttamente a ciò che vuoi).
Dave Clarke,

5
La formalizzazione di una prova può essere piuttosto complicata se scegli la versione "sbagliata" di essa. Per il problema di Halting suggerirei di provare prima una versione più generale e astratta. Quindi puoi dimostrare in seguito che le macchine di Turing sono un caso speciale della versione astratta, se hai ancora voglia di farlo (ci saranno molti dettagli noiosi sulle macchine di Turing, quindi forse il tempo sarebbe meglio passare a fare qualcos'altro). Penserò a un buon modo per dimostrarlo in Coq. Siamo stati sintonizzati.
Andrej Bauer,

5
Se sei bravo in matematica e bravo in programmazione, allora hai i prerequisiti per imparare a usare un assistente di prova. Devi davvero trattarlo come una nuova abilità. (Tuttavia, è molto gratificante.)
Neel Krishnaswami il

Sembra che la risposta alla domanda sia "no". Un sistema del genere sarebbe molto utile, credo, potrei chiedere che se formalizzi le macchine di Turing, potresti pensare un po 'all'equivalenza del tempo polinomiale?
Colin McQuillan,

Risposte:


17

Ecco una libreria Isabelle / HOL contenente il teorema di Rice, che afferma l'indecidibilità di una vasta gamma di problemi. Poiché questa libreria modella la calcolabilità tramite funzioni ricorsive, è necessario codificare una macchina di Turing universale come funzione ricorsiva per utilizzare questo teorema per dimostrare indecidibilità del problema di arresto delle macchine di Turing. Tuttavia, le parti essenziali della prova di indecidibilità sono già state eseguite.

http://afp.sourceforge.net/browser_info/current/HOL/Recursion-Theory-I/index.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.