La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Tino CortesiTecniche di Analisi di Programmi 1 Ricorsione Aggiungiamo funzioni ricorsive (in una sola variabile, per semplicità). La funzione semantica."— Transcript della presentazione:

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

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

3 Tino CortesiTecniche di Analisi di Programmi 3 Semantica delle funzioni ricorsive

4 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) =

5 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 =

6 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

7 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.

8 Tino CortesiTecniche di Analisi di Programmi 8 Semantica della ricorsione

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

10 Tino CortesiTecniche di Analisi di Programmi 10 Correttezza (continua)

11 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)

12 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

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

14 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.


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

Presentazioni simili


Annunci Google