1 Interpretazione astratta: un approccio sistematico all’analisi statica.

Slides:



Advertisements
Presentazioni simili
Linee guida per l’insegnamento della matematica nella scuola media
Advertisements

Traduzione ed Interpretazione
Premessa: si assume di aver risolto (correttamente
Punti Fissi.
23/11/06Dino Puller1 Analisi statica in tempo reale con domini numerici Facoltà di scienze MM.FF.NN. Università degli studi di Verona.
Scomposizione funzionale
Linguaggi di programmazione
Algebra parziale con predicati
Linguaggi a memoria condivisa Lidea è di aggiungere ad un linguaggio imperativo dei costrutti per rappresentare lesecuzione parallela di statements. Supponiamo.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Metodologie di Programmazione = decomposizione basata su astrazioni
Generalità Linguaggio e Macchina Astratta
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
Ordini Parziali - Reticoli
General Framework. Tino CortesiTecniche di Analisi di Programmi 2 Framework Nonostante le differenze tra le analisi viste finora (Reaching Definitions,
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Interpretazione Astratta
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA Tino Cortesi.
Tino CortesiTecniche di Analisi di Programmi 1 Ricorsione Aggiungiamo funzioni ricorsive (in una sola variabile, per semplicità). La funzione semantica.
Semantiche dei linguaggi di programmazione
Tino CortesiTecniche di Analisi di Programmi 1 Astrazione e Concretizzazione In una Interpretazione Astratta ci aspettiamo che il seguente diagramma commuti:
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Gestione dei dati e della conoscenza (agenti intelligenti) M.T. PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 7 Prof. M.T. PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. A)
-calcolo Vogliamo studiare le problematiche relative al meccanismo di chiamata di funzione (eg differenze fra binding statico e dinamico) in isolamento.
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
Modello E-R Generalizzazioni
Progettazione di una base di dati
Modello E-R Generalizzazioni
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
AN FI Un denominatoe comune Linguaggi di programmazione Un denominatore comune.
Laboratorio di Metodi Numerici a.a. 2008/2009 Prof. Maria Lucia Sampoli.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Linguaggi e Modelli Computazionali LS - Prof E.Denti
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Commenti all’esempio del treno Nell’esempio del treno si è iniziato dalle attività generiche che tipicamente servono per portare a termine i compiti iniziali.
Commenti all’esempio del treno Nell’esempio del treno si è iniziato dalle attività generiche e/o attività operative che tipicamente costituiscono i passi.
Un interprete astratto per l’inferenza dei tipi
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
1 Un po’ di ripasso di algebra §necessaria per discutere la semantica denotazionale l e da riprendere quando parleremo di interpretazione astratta §reticoli.
A proposito di spazio scala e di altre features locali... Elisabetta Delponte
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Elementi di semantica denotazionale ed operazionale
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Progettazione di basi di dati: metodologie e modelli
Automi temporizzati.
Complessità Computazionale
ADT 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 24 Introduzione ai.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
I compiti dello Stato nella teoria economica. evoluzione del pensiero economico e definizione dell’estensione dei compiti dello stato: riconoscimento.
Pensiero computazionale, tecnologie digitali e didattica della matematica Giampaolo Chiappini – Istituto per le Tecnologie Didattiche - Consiglio Nazionale.
Astrazione e Concretizzazione
Interpretazione Astratta
Transcript della presentazione:

1 Interpretazione astratta: un approccio sistematico all’analisi statica

2 Astrazione e Approssimazione §due concetti rilevanti in numerose aree dell’informatica l per analizzare il comportamento di sistemi complessi l per rendere l’analisi effettiva dal punto di vista computazionale §uno strumento utile l l’interpretazione astratta

3 Interpretazione Astratta (Cousot & Cousot, POPL 77 & 79) una tecnica vecchia di 20 anni che permette di gestire in modo sistematico astrazione ed approssimazione l nata per descrivere (e dimostrare corrette) analisi statiche l applicata con successo a molti paradigmi e ad altri compiti “basati sulla semantica” (per esempio, verifica) l vista oggi come una tecnica generale per ragionare su semantiche a diversi livelli di astrazione

4 Interpretazione Astratta, Semantica, Algoritmi di Analisi 1 §spesso l’interpretazione astratta viene usata nel seguente modo §abbiamo: l una semantica l un algoritmo di analisi sviluppato con tecniche ad-hoc quelli dei compilatori (tecniche data-flow) quelli dei teorici dei tipi (sistemi di tipi) l la teoria è usata per dimostrare che l’algoritmo è corretto, cioè che i suoi risultati sono una approssimazione corretta della proprietà da analizzare (osservata sulla semantica)

5 Interpretazione Astratta, Semantica, Algoritmi di Analisi 2 §la visione sistematica dell’interpretazione astratta §abbiamo: l una semantica l un dominio astratto progettato per modellare la proprietà da analizzare l la teoria è usata per derivare sistematicamente la semantica astratta l l’algoritmo di analisi è esattamente il calcolo della semantica astratta ed è corretto per costruzione

6 L’idea generale “sistematica” §una semantica l qualunque stile, da una definizione denotazionale ad un interprete dettagliato che assegna un significato ai programmi su un opportuno dominio concreto (dominio delle computazioni concrete) §un dominio astratto che modella solo alcune proprietà delle computazioni concrete e si dimentica delle (astrae dalle) altre (dominio delle computazioni astratte) §deriviamo una semantica astratta, che ci permette di “eseguire” il programma sul dominio astratto per calcolare il suo significato astratto, cioè la proprietà modellata

7 La Teoria della Interpretazione Astratta in 4 Passi §domini concreto e astratto §la connessione di Galois §gli operatori astratti §dalla semantica concreta a quella astratta

8 I Domini Concreto e Astratto §due reticoli completi l gli ordinamenti parziali riflettono la “precisione” il “più piccolo” è il migliore   dominio concreto ( P(C), , C, ,  ) ha la struttura di insieme delle parti vedremo più avanti perché,   dominio astratto ( A,  bottom, top, lub, glb ) l ogni valore astratto è una descrizione di “un insieme di” valori concreti

9 Il Dominio Astratto Sign   dominio concreto ( P ( Z ), , C, ,  ) insiemi di interi,   dominio astratto ( Sign,  bot, top, lub, glb )

10 Concretizzazione   dominio concreto ( P(C), , C, ,  ),   dominio astratto ( A,  bottom, top, lub, glb ) §il significato dei valori astratti è definito da una funzione di concretizzazione  : A   P(C)  a  A,  (a) è l’insieme dei valori concreti descritto da a l per questo il dominio concreto deve avere la struttura di insieme di parti §la funzione di concretizzazione deve essere monotona  a 1,a 2  A, a 1  a 2 implica  (a 1 )   (a 2 ) l la concretizzazione preserva la precisione relativa

11 Astrazione   dominio concreto ( P(C), , C, ,  ),   dominio astratto ( A,  bottom, top, lub, glb )  ogni elemento di P(C) dovrebbe avere un’unica “migliore” (più precisa) descrizione in A possibile se e solo se A è una famiglia di Moore chiuso sotto glb l in questo caso, si può definire una funzione di astrazione  : P(C)  A  c  P(C),  (c) è la migliore descrizione astratta di c l la funzione di astrazione deve essere monotona  c 1,c 2  P(C), c 1  c 2 implica  (c 1 )   (c 2 ) l l’astrazione preserva la precisione relativa

12 Connessioni di Galois   dominio concreto ( P(C), , C, ,  ),   dominio astratto ( A,  bottom, top, lub, glb )  : A   P(C) (concretizzazione),  : P(C)  A (astrazione),  monotone  connessione (inserzione) di Galois  c  P(C). c  c  ci può essere perdita di informazione (approssimazione) nel descrivere un elemento di P(C) con un elemento di A  a  A.  a    a (  a  A.  a    a)   e  possono essere determinate l’una dall’altra

13 L’esempio di Sign  Sign  (x) , if x= bot l {y|y>0}, if x= + l {y|y  0}, if x= 0+ l {0}, if x= 0 {y|y  0}, if x= 0- l {y|y<0}, if x= - Z, if x= top  Sign  y) = glb of bot, if y=  -, if y  {y|y<0} 0-, if y  {y|y  0} 0, if y  {0} 0+, if y  {y|y  0} +, if y  {y|y  0} top, if y  Z

14 Semantica concreta  la semantica concreta è definita come minimo (o massimo) punto fisso di una funzione di valutazione semantica concreta F definita sul dominio C l non vuol dire che lo stile di definizione debba necesariamente essere denotazionale!  F è definita in termini di operatori semantici primitivi f i su C  la funzione di valutazione semantica astratta viene ottenuta rimpiazzando in F ogni operatore semantico concreto con un corrispondente operatore astratto (localmente corretto, vedi dopo)  dato che l’effettivo dominio concreto è P(C), dobbiamo prima estendere la semantica concreta lfp F alla semantica collecting definita su P(C)

15 La semantica collecting  l’estensione di lfp F all’insieme delle parti (per ottenere la semantica collecting) è semplicemente una operazione concettuale semantica collecting = { lfp F }  non abbiamo bisogno di definire una nuova funzione di valutazione semantica collecting su P(C) l ci basta ragionare in termini di estensioni alle parti di tutti gli operatori primitivi, nella progettazione degli operatori astratti e nella dimostrazione delle loro proprietà §stessa notazione per gli operatori concreti e le loro versioni collecting

16 Correttezza locale degli operatori astratti  per ciascun f i dobbiamo fornire un corrispondente f i  definito su A  f i  deve essere localmente corretto, cioè  x 1,..,x n  P(C)  f i  x 1,..,x n )  f i   x 1 ,..,  x n  l un passo di calcolo concreto è più preciso della concretizzazione del “corrispondente” passo di calcolo astratto l un requisito molto debole, che è soddisfatto, per esempio, da un operatore che calcola sempre il peggiore valore astratto (il top del reticolo) l la cosa importante nella progettazione di operazioni astratte è la precisione

17 Operazioni astratte: ottimalità e completezza §correttezza  x 1,..,x n  P(C)  f i  x 1,..,x n )  f i   x 1 ,..,  x n  §ottimalità  y 1,..,y n   A. f i   y 1,..,y n )  f i   y 1 ,..,  y n  il più preciso operatore astratto f i  corretto rispetto a f i un limite teorico ed una base per la progettazione, piuttosto che una definizione da implementare §completezza (precisione assoluta)  x 1,..,x n  P(C)    f i  x 1,..,x n ))  f i   x 1 ,..,  x n  non c’è perdita di informazione,  l’astrazione del passo di calcolo concreto è esattamente il risultato del corrispondente passo di calcolo astratto

18 Operazioni astratte su Sign : Times Sign

19 Operazioni astratte su Sign : Plus Sign

20 L’esempio dei segni  Times e Plus sono gli operatori classici estesi a P(Z)  sia Times Sign che Plus Sign sono ottimi (e quindi corretti)  Times Sign è anche completo (non c’è approssimazione)  Plus Sign è necessariamente incompleto   Sign ( Times ({2},{-3})) = Times Sign (  Sign ({2}),  Sign ({-3}))   Sign ( Plus ({2},{-3}))  Plus Sign (  Sign ({2}),  Sign ({-3}))

21 Correttezza globale §la composizione di operatori astratti localmente corretti è localmente corretta rispetto alla composizione degli operatori concreti l la composizione non conserva l’ottimalità, cioè la composizione di operatori ottimi può essere meno precisa della versione astratta ottimale della composizione  se F   (funzione di valutazione semantica astratta) è ottenuta rimpiazzando in F ogni operatore semantico concreto con un corrispondente operatore astratto localmente corretto  anche F  è localmente corretta  x  P(C)  F (x)  ( F  (  (x))) §la correttezza locale implica quella globale, cioè viene preservata anche dal calcolo di punto fisso lfp F   (lfp  F  )  (lfp F )  lfp F  §la semantica astratta è meno precisa dell’astrazione di quella concreta

22 Da dove viene l’approssimazione? §operatori astratti incompleti §ci sono più cammini di esecuzione nella semantica astratta l lo stato astratto non ha abbastanza informazione per permettere scelte deterministiche l conditionali, pattern matching, etc. §l’insieme degli stati astratti risultanti viene trasformato in un singolo stato astratto, effettuando una operazione di lub astratto

23 L’approssimazione in computazioni astratte su Sign §stato concreto [x={3}] §if x>2 then y:=3 else y:=-5; §stato concreto[x={3}, y={3}] stato astratto [x=+] if x>2 then y:=3 else y:=-5; –la guardia astratta “può essere sia true che false” –dobbiamo valutare in modo astratto entrambi i cammini –i due stati astratti così ottenuti sono “fusi” eseguendo un lub su Sign stato astratto [x=+,y=top]

24  ( lfp F )  lfp F  perché calcolare lfp F  ?  lfp F non può essere calcolato in un numero finito di passi in generale sono necessari  passi  lfp F   può essere calcolato in un numero finito di passi, se il dominio astratto è finito o almeno noetheriano l non contiene catene infinite crescenti l interessante per l’analisi statica di programmi, dove il calcolo del punto fisso deve terminare l la maggior parte delle proprietà considerate nell’analisi statica sono indecidibili l accettiamo una perdita di precisione (approssimazione corretta) per rendere l’analisi fattibile

25 Applicazioni §analisi statica = calcolo effettivo della semantica astratta l se il dominio astratto è noetheriano e gli operatori astratti hanno una complessità accettabile l se il dominio astratto è non noetheriano oppure se il calcolo di punto fisso è troppo complesso si usano operatori di widening –che calcolano in modo effettivo una approssimazione (superiore) di lfp F 

26 Lo schema della interpretazione astratta  ( P(C), , C, ,  ) (dominio concreto )  ( A,  bottom, top, lub, glb ) (dominio astratto )  : A   P(C) monotona (funzione di concretizzazione)  : P(C)  A monotona (funzione di astrazione)  x  P(C)  x  x   y  A.  y    y (connessione di Galois)   f i   f i   |  x 1,..,x n  P(C)  f i  x 1,..,x n )  f i   x 1 ,..,  x n  (correttezza locale) §scelte critiche l il dominio astratto per modellare la proprietà l gli operatori astratti corretti (e possibilmente ottimali)