Interpretazione Astratta

Slides:



Advertisements
Presentazioni simili
I numeri interi relativi
Advertisements

Le frazioni Vogliamo ampliare l’insieme numerico N con un insieme numerico nel quale sia sempre possibile eseguire la divisione . Per fare ciò dobbiamo.
1 I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI.
Punti Fissi.
I numeri naturali ….. Definizione e caratteristiche
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Linguaggio C++ Selezione.
La partita doppia e i modelli contabili
Linguaggi di programmazione
Specifiche Algebriche
Algebra parziale con predicati
Metodologie di Programmazione = decomposizione basata su astrazioni
Semantica operazionale
Relazione tra due insiemi:
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Elettrostatica 3 23 maggio 2011
esponente del radicando
2ab2 2b4 4x − 2y a 3b2y3 3b2y3b Definizione e caratteristiche
(se a = 0 l’equazione bx + c = 0 è di primo grado)
Ordini Parziali - Reticoli
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA Tino Cortesi.
Semantica Denotazionale
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:
Semantica Denotazionale
Ordini Parziali - Reticoli
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
NUMERI RELATIVI.
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
1. ( punti 7 ) Siano dati un insieme di localizzazioni potenziali (nodi grandi) ed un insieme di clienti da servire (nodi piccoli). Il costo di afferenza.
Il lavoro dipende dal percorso??
Algoritmi.
I numeri relativi by iprof.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
ALGEBRA.
Le operazioni aritmetiche con i numeri naturali e decimali
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
I numeri interi relativi
MATRICI classe 3 A inf (a.s ).
Le operazioni con i numeri
I NUMERI IMMAGINARI X2 + 1 = 0 X2 = -1
Elementi di Informatica di base
Unità Didattica 3 Linguaggio C
Addizione e sottrazione
Pippo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
…matematica e… …orologi!
1 Un po’ di ripasso di algebra §necessaria per discutere la semantica denotazionale l e da riprendere quando parleremo di interpretazione astratta §reticoli.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Le quattro operazioni.
PRESENTAZIONE A cura di: Ludovica, Vanessa e Elena
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Astrazione e Concretizzazione
Interpretazione Astratta
Transcript della presentazione:

Interpretazione Astratta

Astrazione: selezionare una proprieta’ Tino Cortesi Analisi e Verifica di Programmi

Astrazione: selezionare una (delle) proprieta’ Tino Cortesi Analisi e Verifica di Programmi

Astrazione e correttezza Tino Cortesi Analisi e Verifica di Programmi

Astrarre un insiemi di punti nel piano… Tino Cortesi Analisi e Verifica di Programmi

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) Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi L’idea 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 Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi 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 m definita da: Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Semantica astratta Possiamo considerare un’astrazione della semantica concreta (semantica astratta) che calcola solo il segno delle espressioni Tino Cortesi Analisi e Verifica di Programmi

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

Una prospettiva diversa Possiamo associare ad ogni valore astratto l’insieme di valori concreti che esso rappresenta: Tino Cortesi Analisi e Verifica di Programmi

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

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

Analisi e Verifica di Programmi Aggiungiamo - Aggiungiamo al nostro tiny language l’operatore unario di cambiamento di segno Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Aggiungiamo + Aggiungere l’addizione è 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? Tino Cortesi Analisi e Verifica di Programmi

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

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

Analisi e Verifica di Programmi Esempi In alcuni casi c’è perdita di informazione dovuta alle operazioni In altri casi non c’è perdita di informazione Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi 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? L’insieme vuoto. Questo è rappresentato da un nuovo elemento, ^, rispetto al quale si devono estendere le altre operazioni Tino Cortesi Analisi e Verifica di Programmi

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

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

Analisi e Verifica di Programmi Definizione Generale Una Interpretazione Astratta consiste in: Un dominio astratto A ed un dominio concreto D A e D reticoli completi. L’ordine 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: Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi 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, 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} 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+ Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Inserzioni di Galois (C, ), (A, ) : A  C (concretizzazione) : C  A (astrazione)  ,  monotone xC. x  ((x)) yA. ((y)) = y  ,  si determinano a vicenda Tino Cortesi Analisi e Verifica di Programmi

Analisi e Verifica di Programmi Operazioni astratte Astrarre una funzione in modo ottimale: f# =   f   f# Abstract domain   f Concrete domain Tino Cortesi Analisi e Verifica di Programmi

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