Prove di correttezza del compilatore


20

Sto cercando materiale tutorial che copra le prove di correttezza del compilatore, preferibilmente usando metodi denotazionali, a livello di studente di livello iniziale.

In alternativa, conosci alcuni semplici esempi di compilatore che potrei usare per illustrare i problemi? (Il primo esempio che mi è venuto in mente è stato un traduttore dalle espressioni infix a postfix. Ma non è riuscito a mostrare qualcosa di interessante oltre a come fare l'induzione sulla sintassi.)

Risposte:


10

Non conosco un buon materiale didattico, ma ci sono articoli sufficientemente elementari per uno studente laureato (come me). Il primo potrebbe essere quello che stai cercando (l'enfasi è mia).

Nick Benton, semplici prove di correttezza relazionale per analisi statiche e trasformazioni di programmi . Del 2004.

Mostriamo come alcune analisi statiche classiche per i programmi imperativi e le trasformazioni ottimizzanti che esse consentono, possono essere espresse e dimostrate corrette usando tecniche logiche e denotazionali elementari . Gli ingredienti chiave sono un'interpretazione delle proprietà del programma come relazioni, piuttosto che predicati, e la consapevolezza che, sebbene molte analisi del programma siano tradizionalmente formulate in termini molto dimensionali, le trasformazioni associate sono effettivamente abilitate da proprietà estensionali più liberali.

Anche questi articoli potrebbero interessarti. Mi hanno aiutato moltissimo!

  1. Dimostrare la correttezza delle ottimizzazioni del compilatore di Temporal Logic , David Lacey, Neil D. Jones, Eric Van Wyk, Carl Christian Frederiksen. Avrei pensato che ci fosse più materiale usando la bisimulazione nel contesto delle ottimizzazioni del compilatore. Se il tuo obiettivo è davvero tecniche denotazionali, puoi probabilmente codificare queste prove usando le caratterizzazioni della bisimulazione.
  2. Generazione di ottimizzazioni del compilatore da Proofs , Ross Tate, Michael Stepp e Sorin Lerner. Include una formalizzazione teorica di categoria del loro metodo di prova.
  3. Provare l'ottimizzazione corretta utilizzando l'equivalenza del programma con parametri , Sudipta Kundu, Zachary Tatlock e Sorin Lerner. Andateci se vi piacciono le relazioni logiche.
  4. Un back-end di compilatore verificato formalmente Xavier Leroy.




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.