La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Interpretazione Astratta. Tino CortesiAnalisi e Verifica di Programmi 2 Astrazione: selezionare una proprieta.

Presentazioni simili


Presentazione sul tema: "Interpretazione Astratta. Tino CortesiAnalisi e Verifica di Programmi 2 Astrazione: selezionare una proprieta."— Transcript della presentazione:

1 Interpretazione Astratta

2 Tino CortesiAnalisi e Verifica di Programmi 2 Astrazione: selezionare una proprieta

3 Tino CortesiAnalisi e Verifica di Programmi 3 Astrazione: selezionare una (delle) proprieta

4 Tino CortesiAnalisi e Verifica di Programmi 4 Astrazione e correttezza

5 Tino CortesiAnalisi e Verifica di Programmi 5 Astrarre un insiemi di punti nel piano…

6 Tino CortesiAnalisi e Verifica di Programmi 6 Interpretazione Astratta Una tecnica utilizzata da quasi 30 anni (Patrick e Radhia Cousot, 1977) per trattare in modo sistematico astrazioni e approssimazioni Nata per descrivere analisi statiche di programmi imperativi e provarne la correttezza. Sviluppata soprattutto su linguaggi dichiarativi (logici e funzionali) Vista oggi come tecnica generale per ragionare su semantiche a diversi livelli di astrazione Applicata con successo a sistemi distribuiti per verifica di programmi (correttezza – sicurezza)

7 Tino CortesiAnalisi e Verifica di Programmi 7 Lidea generale il punto di partenza è la semantica concreta, ovvero una funzione che assegna significati ai comandi di un programma in un dominio fissato di computazione. un dominio astratto, che modella alcune proprietà delle computazione concrete, tralasciando la rimanente informazione (dominio di computazione astratto) derivare una semantica astratta, che permetta di eseguire il programma sul dominio astratto per calcolare la proprietà che il dominio astratto modella. applicando un algoritmo di punto fisso sarà quindi possibile calcolare staticamente una approssimazione corretta della semantica astratta

8 Tino CortesiAnalisi e Verifica di Programmi 8 Semantica concreta Consideriamo un linguaggio molto limitato, che permette unicamente di operare su moltiplicazioni di interi. La semantica di questo linguaggio si può descrivere mediante una funzione definita da:

9 Tino CortesiAnalisi e Verifica di Programmi 9 Semantica astratta Possiamo considerare unastrazione della semantica concreta (semantica astratta) che calcola solo il segno delle espressioni

10 Tino CortesiAnalisi e Verifica di Programmi 10 Correttezza Possiamo dimostrare che questa astrazione è corretta, ovvero che predice correttamente il segno delle espressioni. La dimostrazione è per induzione strutturale sullespressione e, ed utilizza le proprietà della moltiplicazione tra interi (il prodotto di due positivi è positivo, ecc.).

11 Tino CortesiAnalisi e Verifica di Programmi 11 Una prospettiva diversa Possiamo associare ad ogni valore astratto linsieme di valori concreti che esso rappresenta:

12 Tino CortesiAnalisi e Verifica di Programmi 12 Concretizzazione La funzione di concretizzazione mappa un valore astratto in un insieme di valori concreti Indichiamo con D il dominio concreto e con A il dominio astratto

13 Tino CortesiAnalisi e Verifica di Programmi 13 Interpretazione Astratta Questa è una Interpretazione Astratta. Una computazione in un dominio astratto In questo caso, il dominio è {+,0,-}. La semantica astratta è corretta è unapprossimazione della semantica concreta La funzione di concretizzazione stabilisce la connessione tra i due domini

14 Tino CortesiAnalisi e Verifica di Programmi 14 Aggiungiamo - Aggiungiamo al nostro tiny language loperatore unario di cambiamento di segno

15 Tino CortesiAnalisi e Verifica di Programmi 15 Aggiungiamo + Aggiungere laddizione è più complesso, in quanto il dominio astratto non è chiuso rispetto a questa operazione A quale valore astratto corrisponde il risultato della somma di due numeri interi con segno opposto?

16 Tino CortesiAnalisi e Verifica di Programmi 16 Soluzione Aggiungiamo un nuovo elemento astratto che rappresenta un qualsiasi numero intero

17 Tino CortesiAnalisi e Verifica di Programmi 17 Estendere le altre operazioni Avendo aggiunto un elemento al dominio astratto, è necessario estendere le operazioni astratte già definite

18 Tino CortesiAnalisi e Verifica di Programmi 18 Esempi In alcuni casi cè perdita di informazione dovuta alle operazioni In altri casi non cè perdita di informazione

19 Tino CortesiAnalisi e Verifica di Programmi 19 Aggiungiamo / Aggiungere la divisione intera (con resto) / non da problemi, eccetto il caso della divisione per 0. Se dividiamo gli intero di un insieme di interi per 0 che risultato otteniamo? Linsieme vuoto. Questo è rappresentato da un nuovo elemento,, rispetto al quale si devono estendere le altre operazioni

20 Tino CortesiAnalisi e Verifica di Programmi 20 Il dominio astratto Il dominio astratto è un reticolo completo Lordine parziale è coerente con la funzione di concretizzazione: Ogni sottoinsieme ha un least upper bound (lub) ed un greatest lower bound (glb): è un reticolo completo

21 Tino CortesiAnalisi e Verifica di Programmi 21 La funzione di astrazione Alla funzione di concretizzazione corrisponde una funzione di astrazione. La funzione mappa insiemi di valori concreti in un valore astratto (il più piccolo che li rappresenta tutti). Nel nostro esempio,

22 Tino CortesiAnalisi e Verifica di Programmi 22 Definizione Generale Una Interpretazione Astratta consiste in: Un dominio astratto A ed un dominio concreto D A e D reticoli completi. Lordine riflette la precisione (più piccolo = più preciso) Funzioni di concretizzazione e di astrazione monotone, che formino una inserzione di Galois. Una funzione che astrae correttamente la semantica (operazioni astratte). Inserzione di Galois:

23 Tino CortesiAnalisi e Verifica di Programmi 23 Un altro esempio sign (x), if x= bot {y|y>0}, if x= + {y|y 0}, if x= 0+ {0}, if x= 0 {y|y 0}, if x= 0- {y|y<0}, if x= - Z Z, if x= top sign y) = glb di bot, if y= -, if y {z| z < 0} 0-, if y {z | z 0} 0, if y {0} 0+, if y {z | z 0} +, if y {z | z 0} Z top, if y Z sign ({0,1,3})= 0+ sign (0+) {0,1,3}, {3,34,2},... sign ( sign ({0,1,3})) {0,1,3} sign ( sign (0+)) = 0+

24 Tino CortesiAnalisi e Verifica di Programmi 24 Inserzioni di Galois CA ( C, ) ( A, ) AC : A C (concretizzazione) CA : C A (astrazione) monotone C x C x x A y A y y si determinano a vicenda

25 Tino CortesiAnalisi e Verifica di Programmi 25 Astrarre una funzione in modo ottimale: f # = f Abstract domain Concrete domain f f#f# Operazioni astratte

26 Tino CortesiAnalisi e Verifica di Programmi 26 Astrazioni come chiusure Il dominio astratto può essere ottenuto dividendo il dominio concreto in sottoinsiemi (non disgiunti) a i. La funzione di astrazione mappa un sottoinsieme del dominio nel più piccolo di questi a i che lo contiene.


Scaricare ppt "Interpretazione Astratta. Tino CortesiAnalisi e Verifica di Programmi 2 Astrazione: selezionare una proprieta."

Presentazioni simili


Annunci Google