Tino CortesiTecniche di Analisi di Programmi 1 Ricorsione Aggiungiamo funzioni ricorsive (in una sola variabile, per semplicità). La funzione semantica.

Slides:



Advertisements
Presentazioni simili
Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
Advertisements

Strutture dati per insiemi disgiunti
Ricorrenze Il metodo di sostituzione Il metodo iterativo
Punti Fissi.
Programmazione dinamica: problema della sottosequenza più lunga
23/11/06Dino Puller1 Analisi statica in tempo reale con domini numerici Facoltà di scienze MM.FF.NN. Università degli studi di Verona.
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Procedure e funzioni ricorsive
Algoritmi e Programmazione
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
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Lez. 21 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Semantica assiomatica.
QUICKSORT … un breve ripasso!
Alberi binari di ricerca
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Ordini Parziali - Reticoli
Dataflow Analysis. Tino CortesiTecniche di Analisi di Programmi 2 Dataflow Analysis Il punto di partenza per una dataflow analysis è una rappresentazione.
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
Model Checking.
Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA Tino Cortesi.
Analisi Interprocedurale
Semantica Denotazionale
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
Numerical Power Analysis
Ordini Parziali - Reticoli
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
Algoritmi e strutture Dati - Lezione 7
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
CORSO DI PROGRAMMAZIONE II
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
-calcolo Vogliamo studiare le problematiche relative al meccanismo di chiamata di funzione (eg differenze fra binding statico e dinamico) in isolamento.
Semantica denotazionale algebrica di LW Idea intuitiva: i valori che vogliamo denotare sono: gli statements sono funzioni di trasformazioni di stato (interno)
Algoritmo di Kruskal Parte con tutti i vertici e nessun lato (sottografo aciclico, o foresta, ricoprente) Ordina i lati per costo non decrescente.
mosaic manipola oggetti primitivi (ruota e unisci) regole:
Introduzione alla Ricorsione
30 ottobre Mergesort F. Bombi 30 ottobre 2002.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Lordinamento di tre numeri interi. acquisisci a,b,c (a > b) AND (a > c)(b > a) AND (b > c) (c > a) AND (c > b) Scrivi c,b,aScrivi b,c,aScrivi c,a,bScrivi.
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Algoritmo per la generazione dei primi 20 numeri dispari Autore: Francesco Russo matr
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Ricorsione CORDA – Informatica A. Ferrari Testi da Alessandro Bugatti
1 Un esempio con iteratore: le liste ordinate di interi.
Un interprete astratto per l’inferenza dei tipi
4/5/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella.
Flusso Statico e Dinamico 20/03/2006. Codice da Interpretare int valore; valore = funz(); if( valore > 0 ) { [codice1] } else { [codice2] } return valore;
Allievi Elettrici - AA Le funzioni ricorsive in C
TECNICA DIVIDE ET IMPERA
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.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Liste di Interi Esercitazione. Una variante Liste concatenate di Integers Non modificabile Costruttori per creare la lista vuota o un nodo Metodi d’istanza.
Elementi di semantica denotazionale ed operazionale
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
7/22/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella.
1 Tipi di dato modificabili §a livello semantico, riconduciamo la modificabilità alla nozione di variabile l lo stato “modificabile” corrispondente sarà.
Algoritmo per il calcolo del maggiore tra tre numeri qualsiasi Francesco PUCILLO matr
Astrazione e Concretizzazione
Interpretazione Astratta
Transcript della presentazione:

Tino CortesiTecniche di Analisi di Programmi 1 Ricorsione Aggiungiamo funzioni ricorsive (in una sola variabile, per semplicità). La funzione semantica associata è del tipo

Tino CortesiTecniche di Analisi di Programmi 2 Semantica concreta rivista Generalizziamo la funzione m, per tener conto delle chiamate di funzione.

Tino CortesiTecniche di Analisi di Programmi 3 Semantica delle funzioni ricorsive

Tino CortesiTecniche di Analisi di Programmi 4 Semantica delle funzioni ricorsive def f = if x=0 then 1 else f(x - 1) f 0 (i) = per ogni i f 1 (i) = if x=0 then 1 else f(x - 1) (f 0 )(i) = 1 (f 0 )(i) se i=0 = 1 f(x - 1) (f 0 )(i) altrimenti = = f 0 ( x - 1 (f 0 )(i)) = f 0 ( x (f 0 )(i)) - f 0 ( 1 (f 0 )(i)) = f 0 (i) - f 0 (1) =

Tino CortesiTecniche di Analisi di Programmi 5 def f = if x=0 then 1 else f(x - 1) f 0 (i) = per ogni i f 1 (i) = 1 se i=0, altrimenti f 2 (i) = if x=0 then 1 else f(x - 1) (f 1 )(i) = 1 (f 1 )(i) se i=0 = 1 f(x - 1) (f 1 )(i) altrimenti = = f 1 ( x - 1 (f 1 )(i)) = f 1 ( 0 (f 1 )(i)) se i =1 [ 0 (f 1 )(1)=0] = f 1 (0) = 1 = f 1 (j) (j#0) altrimenti =

Tino CortesiTecniche di Analisi di Programmi 6 def f = if x=0 then 1 else f(x - 1) f 0 (i) = per ogni i f 1 (i) = 1 se i=0, altrimenti f 2 (i) = 1 se i=0,1, altrimenti f 3 (i) = 1 se i=0,1,2, altrimenti f 4 (i) = 1 se i=0,1,2,3, altrimenti (f) = U i>=0 f i

Tino CortesiTecniche di Analisi di Programmi 7 Semantica astratta In modo analogo, dobbiamo estendere la definizione della semantica astratta. Richiediamo che tutte le funzioni siano monotone.

Tino CortesiTecniche di Analisi di Programmi 8 Semantica della ricorsione

Tino CortesiTecniche di Analisi di Programmi 9 Correttezza Elementi corrispondenti nelle due catene sono nella relazione giusta

Tino CortesiTecniche di Analisi di Programmi 10 Correttezza (continua)

Tino CortesiTecniche di Analisi di Programmi 11 Semantica astratta def f = if x=0 then 1 else f(x - 1) f 0 (i) = per ogni i in {0,+,-,…} f 1 (i) = if x=0 then 1 else f(x - 1) (f 0 )(i) = 1 (f 0 )(i) = + f(x - 1) (f 0 )(i) = lub= f 0 ( x - 1 (f 0 )(i)) = f 0 ( x (f 0 )(i)) - f 0 ( 1 (f 0 )(i)) = f 0 (i) - f 0 (+) = = + f 2 (i)= f 1 (i)

Tino CortesiTecniche di Analisi di Programmi 12 Riassumendo… Applicare le tecniche di Interpretazione astratta significa Definire semantica concreta ed astratta del programma: domini ed operazioni Applicare un algoritmo di punto fisso

Tino CortesiTecniche di Analisi di Programmi 13 Abstract Semantics Collecting Semantics Partitioning Concrete Semantics Abstract Domain Abstract Domain Iterative Resolution Algorithms Tuners

Tino CortesiTecniche di Analisi di Programmi 14 Conclusioni Il lavoro in Cousot&Cousot 77 ha generato unenorme quantità di lavori scientifici Uno slogan riassuntivo: Analisi Statica = Reticoli + Funzioni monotone E una teoria unificante. Ad es. le tecniche dataflow e di model checking si possono esprimere in termini di Interpretazione Astratta.