Tino CortesiTecniche di Analisi di Programmi 1 Astrazione e Concretizzazione In una Interpretazione Astratta ci aspettiamo che il seguente diagramma commuti:
Tino CortesiTecniche di Analisi di Programmi 2 Correttezza Per la correttezza dellanalisi sono necessarie le seguenti condizioni:
Tino CortesiTecniche di Analisi di Programmi 3 Correttezza locale La condizione di correttezza locale garantisce che il risultato dellapplicazione delloperazione agli elementi astratti s i sia una corretta approssimazione di tutte le operazioni concrete (sugli elementi rappresentati dagli s i ). Per ogni operazione concreta, una operazione astratta corretta ce sempre (quella che restituisce sempre lelemento massimo del dominio astratto)
Tino CortesiTecniche di Analisi di Programmi 4 Correttezza locale AA 2D2D 2D2D op
Tino CortesiTecniche di Analisi di Programmi 5 Prova di correttezza Proviamo per induzione sulla struttura di e che Passo base:
Tino CortesiTecniche di Analisi di Programmi 6 Prova di correttezza Proviamo per induzione sulla struttura di e che Step
Tino CortesiTecniche di Analisi di Programmi 7 Correttezza Possiamo definire la correttezza utilizzando lastrazione al posto della concretizzazione:
Tino CortesiTecniche di Analisi di Programmi 8 Correttezza Laltra direzione
Tino CortesiTecniche di Analisi di Programmi 9 Aggiungere input Il prossimo passo consiste nellestendere il nostro tiny language aggiungendo input. Questo può essere modellato con la presenza di variabili libere nelle espressioni
Tino CortesiTecniche di Analisi di Programmi 10 Semantica concreta La firma della funzione semantica diventa quindi Un modo per scrivere questa funzione è pensarla come un insieme di funzioni da Int a Int indicizzate con espressioni
Tino CortesiTecniche di Analisi di Programmi 11 Semantica Astratta La semantica astratta è data dalla funzione Come per la semantica concreta, possiamo indicizzare
Tino CortesiTecniche di Analisi di Programmi 12 Correttezza Bisogna generalizzare le condizioni di correttezza Le seguenti condizioni sono equivalenti
Tino CortesiTecniche di Analisi di Programmi 13 Correttezza locale La correttezza locale la possiamo esprimere mediante la seguenta regola:
Tino CortesiTecniche di Analisi di Programmi 14 Prova di correttezza
Tino CortesiTecniche di Analisi di Programmi 15 Comando condizionale semantica concreta semantica astratta Si osservi lutilizzo del least upper bound nel dominio astratto
Tino CortesiTecniche di Analisi di Programmi 16 Comando condizionale : correttezza Assumiamo che sia vero il primo ramo del comando condizionale (laltro caso si dimostra allo stesso modo).