4/5/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella.

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.
Uso avanzato di C.
if (condizione.) { blocco_istruzioni } else
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
Linguaggi a memoria condivisa Lidea è di aggiungere ad un linguaggio imperativo dei costrutti per rappresentare lesecuzione parallela di statements. Supponiamo.
Informatica Generale Marzia Buscemi
RB-alberi (Red-Black trees)
INFORMATICA Strutture iterative
Cammini minimi con sorgente singola
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Interpretazione Astratta
Semantica Denotazionale
Semantiche dei linguaggi di programmazione
Ordini Parziali - Reticoli
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Informatica B Allievi Elettrici AA La progettazione per raffinamenti successivi.
EIE 06/07 II / 1 Strumenti delle politiche agricole in economia aperta equilibrio di mercato in economia aperta politiche di un paese importatore politiche.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Algebra di Boole ed elementi di logica
File.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Programmazione 1 9CFU – TANTE ore
Disegnare un circuito sequenziale sincrono che implementa lalgoritmo espresso dal seguente pseudo linguaggio: 1.If (start = 0) then wait; elseif(start=1)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
CORSO DI PROGRAMMAZIONE II
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
Le strutture di controllo
APPUNTI SUL LINGUAGGIO C
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Istruzioni Decisionali
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
OPERAZIONI CON STRINGHE Le operazioni più interessanti da fare, per ora, con le stringhe sono: determinare la lunghezza della stringa, cioè quanti caratteri.
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Analisi di Immagini e Dati Biologici
Lezione II Laboratorio di Programmazione. Sito del corso Lo trovate a:
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.
Lezione 15. Verifica (II) [GJM91, Cap. 6] [BB87] [P93] Appunti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
P.O REGOLAMENTO (UE) 543/ APPLICAZIONE PAR. 5 ARTICOLO 117 (nota ARES 21 febbraio 2013)
-17 Aspettative economiche – Europa Settembre 2013 Indicatore > +20 Indicatore 0 a +20 Indicatore 0 a -20 Indicatore < -20 Unione Europea Totale: +6 Indicatore.
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.
Parallelismo, nondeterminismo e sicurezza dei programmi
SEMINARIO ISTRUZIONE SQUADRA DISTRETTUALE Repubblica di San Marino, 22 Febbraio 2014 Lorenzo Ferretti Garsi Emilia Romagna - Repubblica di San Marino Governatore.
Faberlab e «Curie» a.s. 2014/15 1)BASIC ARDUINO e programmazione di base Classi prime e classi terze: due gruppi di alunni ciascuno. Corso di Programmazione.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 21 Agosto.
1 Un esempio con iteratore: le liste ordinate di interi.
COMUNE DI BOLOGNA Dipartimento Riqualificazione Urbana Simulazione invio telematico SCIA Processo di dematerializzazione per la presentazione delle pratiche.
1 Un po’ di ripasso di algebra §necessaria per discutere la semantica denotazionale l e da riprendere quando parleremo di interpretazione astratta §reticoli.
7/22/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella.
Algoritmo per il calcolo del maggiore tra tre numeri qualsiasi Francesco PUCILLO matr
Transcript della presentazione:

4/5/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella

4/5/ Logica di Hoare (correttezza parziale) {P} skip {P} {false} abort {P} {P 1 } S {P 2 } {P 2 } S’ {P 3 } {P 1 } S ; S’ {P 3 } {P  C} S 1 {Q} {P  ¬ C} S 2 {Q} {P} if C then S 1 else S 2 {Q} {I  C} S {I}. {I} while C do S {I  ¬C} Asserzione induttiva {P} S {Q}

4/5/ Logica di Hoare P ’  P {P} S {Q} Q  Q ’ {P ’ } S {Q ’ } {[x  E] P} x:=E {P} correttezza totale {I  C  0≤v=V} S {I  0≤v<V} {I  0≤v} while C do S {I  ¬C}

4/5/ A  B significa che A è più forte di B (perché “non necessariamente vera” quanto B) Minima precondizione Dato {P} S {Q} possiamo calcolarci la minima precondizione [S]Q (trasformatore di predicato) Vale: {P} S {Q}  P  [S]Q

4/5/ Minima precondizione [ skip ]Q = Q [ abort ]Q = false [ x:= E ]Q = [ x:= E ] Q [ S;S’ ] Q = [S][S’ ]Q [ if B then S1 else S2 ] Q = (B  [ S1 ] Q )  (  B  [ S2 ] Q) [ while B do S ] Q = (  B  Q )  (B  [ S; while B do S ] Q)

4/5/ Semantica della logica di Hoare [S]Q è goduta dal più grande insieme di stati dai quali, applicando S, si ottengono stati nei quali vale Q Indichiamo wp (S,Q) con l ’ insieme di questi stati; spesso Identificheremo le due cose pensando wp (S,Q) come una formula Definiamo |= {P} S {Q} S partendo da uno stato in cui vale P, porta in uno stato nel quale vale Q v. Ben Ari, Huth Ryan cap.4

4/5/ Alcuni teoremi

4/5/ Alcuni teoremi

4/5/ Alcuni teoremi

4/5/ Alcuni teoremi

4/5/ Alcuni teoremi

4/5/ Correttezza della logica di Hoare Se |- HL {P} S {Q} allora |= {P} S {Q} Equivalentemente Se |- HL {P} S {Q} allora |= P  wp(S,Q)

4/5/ Correttezza della logica di Hoare Osservazione: il ciclo W = while B do S può essere definito induttivamente W° = if B then abort else skip W k+1 = if B then S; W k else skip

4/5/ Correttezza della logica di Hoare Lemma wp (W°,Q)   B  (  B  Q) Dim: wp (W°,Q) = wp ( if B then abort else skip,Q) = (B  wp ( abort,Q))  (  B  wp ( skip,Q)) = (B  false)  (  B  Q)   B  (  B  Q)

4/5/ Correttezza della logica di Hoare

4/5/ Correttezza della logica di Hoare Lemma  k=0,∞ wp (W k,Q)  wp (W,Q) Per induzione su k mostriamo wp (W k,Q)  wp (W,Q) k=0 wp (W°,Q)   B  (  B  Q)   B  Q wp (W°,Q)  (  B  Q)  (B  wp (S;W,Q)) wp (W°,Q)  wp (W,Q)

4/5/ Correttezza della logica di Hoare k>0 wp (W k+1,Q) = wp ( if B then S; W k else skip,Q) wp (W k+1,Q) = (B  wp (S; W k,Q))  (  B  wp( skip,Q)) wp (W k+1,Q) = (B  wp(S, wp(W k,Q))  (  B  Q) wp (W k+1,Q)  (B  wp(S, wp(W,Q)))  (  B  Q) wp (W k+1,Q)  (B  wp(S;W,Q))  (  B  Q) wp (W k+1,Q)  wp (W,Q)

4/5/ Correttezza della logica di Hoare Il caso della concatenazione Se |- HL {P} S 1 ; S 2 {Q} allora |= P  wp(S 1 ; S 2,Q) {P} S1 {R} {R} S2 {Q} {P } S1 ; S2 {Q} Per ipotesi induttiva |= {P} S 1 {R} cioè |= P  wp(S 1,R) |= {R} S 2 {Q} cioè |= R  wp(S 2,Q) Per monotonia |= P  wp(S 1, wp(S 2,Q) ) |= P  wp(S 1 ; S 2,Q)

4/5/ Correttezza della logica di Hoare

4/5/ Completezza della logica di Hoare Se |= {P} S {Q} allora |- HL {P} S {Q} Equivalentemente Se |= P  wp(S,Q) allora |- HL {P} S {Q}

4/5/ Completezza della logica di Hoare Se |= P  wp(S,Q) allora |- HL {P} S {Q}

4/5/ Completezza della logica di Hoare Se |= P  wp(S,Q) allora |- HL {P} S {Q}