Tino CortesiTecniche di Analisi di Programmi 1 Astrazione e Concretizzazione In una Interpretazione Astratta ci aspettiamo che il seguente diagramma commuti:

Slides:



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

RICORSIONE: DEFINIZIONI RICORSIVE
Punti Fissi.
Linguaggio C++ Selezione.
Algebra parziale con predicati
Algoritmi e Programmazione
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Esercitazione Frame. Argomento Realizzazione di un tipo di dato astratto Usare le eccezioni per segnalare situazioni particolari Invariante e funzione.
Generalità Linguaggio e Macchina Astratta
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
1 Metodologie di Programmazione. 2 Contenuto generale §tecniche per la programmazione orientata ad oggetti (in piccolo) §esemplificate utilizzando il.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Esercitazione 07/10/2011 Adulto/Matricola. problema Le matricole del primo anno di Psicologia sono persone adulte? Come possiamo verificare questa affermazione?
Definizione e caratteristiche
INFORMATICA Strutture iterative
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
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
Semantica Denotazionale
Ordini Parziali - Reticoli
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Iterazione enumerativa (for)
Process synchronization
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Algoritmi di ordinamento
Teoria degli INSIEMI A cura Prof. Salvatore MENNITI.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
-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)
Unità Didattica 1 Algoritmi

Intelligenza Artificiale
Java base II: Strutture di Controllo
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Cosa significa la parola funzione?
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Pierdaniele Giaretta Primi elementi di logica
Pippo.
Complessità di un algoritmo
Anno accademico Le istruzioni di controllo in C.
Diego Bernini Architetture Software Note sui diagrammi di attività Versione 3.0 – AA
Un interprete astratto per l’inferenza dei tipi
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
Algebra di Boole.
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.
PON VALES-FSE – 2007 – IT – 05 1 PO 007 ASSE II OBIETTIVO H – AZIONE H9 AZIONE C1 MODULO IMPARO GIOCANDO 1 Classi 2 A-B-C-D- di Scuola Primaria Miglioramento.
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:
Compitino del 2004 Alberi Generici. Idea Si vuole un tipo di dato astratto che definisca una struttura ad albero in cui nodi e foglie hanno associato.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
AOT Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
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:
I GRAFICI – INPUT 1.
Astrazione e Concretizzazione
Interpretazione Astratta
Transcript della presentazione:

Tino CortesiTecniche di Analisi di Programmi 1 Astrazione e Concretizzazione In una Interpretazione Astratta ci aspettiamo che il seguente diagramma commuti:

Tino CortesiTecniche di Analisi di Programmi 2 Correttezza Per la correttezza dellanalisi sono necessarie le seguenti condizioni:

Tino CortesiTecniche di Analisi di Programmi 3 Correttezza locale La condizione di correttezza locale garantisce che il risultato dellapplicazione delloperazione agli elementi astratti s i sia una corretta approssimazione di tutte le operazioni concrete (sugli elementi rappresentati dagli s i ). Per ogni operazione concreta, una operazione astratta corretta ce sempre (quella che restituisce sempre lelemento massimo del dominio astratto)

Tino CortesiTecniche di Analisi di Programmi 4 Correttezza locale AA 2D2D 2D2D op

Tino CortesiTecniche di Analisi di Programmi 5 Prova di correttezza Proviamo per induzione sulla struttura di e che Passo base:

Tino CortesiTecniche di Analisi di Programmi 6 Prova di correttezza Proviamo per induzione sulla struttura di e che Step

Tino CortesiTecniche di Analisi di Programmi 7 Correttezza Possiamo definire la correttezza utilizzando lastrazione al posto della concretizzazione:

Tino CortesiTecniche di Analisi di Programmi 8 Correttezza Laltra direzione

Tino CortesiTecniche di Analisi di Programmi 9 Aggiungere input Il prossimo passo consiste nellestendere il nostro tiny language aggiungendo input. Questo può essere modellato con la presenza di variabili libere nelle espressioni

Tino CortesiTecniche di Analisi di Programmi 10 Semantica concreta La firma della funzione semantica diventa quindi Un modo per scrivere questa funzione è pensarla come un insieme di funzioni da Int a Int indicizzate con espressioni

Tino CortesiTecniche di Analisi di Programmi 11 Semantica Astratta La semantica astratta è data dalla funzione Come per la semantica concreta, possiamo indicizzare

Tino CortesiTecniche di Analisi di Programmi 12 Correttezza Bisogna generalizzare le condizioni di correttezza Le seguenti condizioni sono equivalenti

Tino CortesiTecniche di Analisi di Programmi 13 Correttezza locale La correttezza locale la possiamo esprimere mediante la seguenta regola:

Tino CortesiTecniche di Analisi di Programmi 14 Prova di correttezza

Tino CortesiTecniche di Analisi di Programmi 15 Comando condizionale semantica concreta semantica astratta Si osservi lutilizzo del least upper bound nel dominio astratto

Tino CortesiTecniche di Analisi di Programmi 16 Comando condizionale : correttezza Assumiamo che sia vero il primo ramo del comando condizionale (laltro caso si dimostra allo stesso modo).