Model Checking.

Slides:



Advertisements
Presentazioni simili
Automi temporizzati.
Advertisements

Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
Algoritmi e Strutture Dati
Punti Fissi.
INFORMATICA Algoritmi fondamentali
2. Introduzione alla probabilità
Linguaggi algoritmici
Sintassi (prima parte)
Algoritmi e Programmazione
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
(sommario delle lezioni in fondo alla pagina)
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
6. Catene di Markov a tempo continuo (CMTC)
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Introduzione Cosa sono le reti di Petri?
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
Numerazione in base tre Prof. Lariccia Giovanni Gruppo: Roberta Spicciariello, Roberta Accaria e Maria Elisa Graziano.
1 System Call per Comunicazione tra Processi Pipe.
esponente del radicando
RB-alberi (Red-Black trees)
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
6. Catene di Markov a tempo continuo (CMTC)
3. Processi Stocastici Un processo stocastico è una funzione del tempo i cui valori x(t) ad ogni istante di tempo t sono v.a. Notazione: X : insieme di.
4. Automi temporizzati Il comportamento dei sistemi ad eventi temporizzati non è definito semplicemente da una sequenza di eventi o di valori dello stato,
Ordini Parziali - Reticoli
Logiche temporali.
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 Interprocedurale
Semantica Denotazionale
Semantiche dei linguaggi di programmazione
Ordini Parziali - Reticoli
Logiche temporali. Tino CortesiTecniche di Analisi di Programmi 2 Torniamo allesempio dellascensore Nellesempio dellascensore, visto nella lezione precedente,
Esercitazioni su circuiti combinatori
Identificazione delle attività
Algebra di Boole ed elementi di logica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Algebra di Boole ed elementi di logica
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) 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.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
Algoritmi e Strutture Dati (Mod. B)
Introduzione alla programmazione ll
Introduzione alla programmazione lll
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Heap binari e HeapSort.
Unità Didattica 1 Algoritmi
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica di base
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
Pippo.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 21 Agosto.
Automi temporizzati cooperanti (TCA) . Automi cooperanti (CA)  Un CA consiste di n automi finiti, ciascuno con insieme di stati, stato iniziale e tabella.
R. Soncini Sessa, MODSS, S27 Stima degli effetti (Wald) Rodolfo Soncini Sessa MODSS Copyright 2004 © Rodolfo Soncini Sessa.
Informatica 3 V anno.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Automi temporizzati.
Diagrammi a blocchi.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Transcript della presentazione:

Model Checking

Tecniche di Analisi di Programmi Model Checking E’ una tecnica per la verifica automatica di software e di sistemi reattivi Consiste nel verificare alcune proprietà, espresse in logiche temporali, di un modello del sistema. La base dei modelli operazionali sui quali si applica questa tecnica sono gli automi Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Automi Un automa è una rappresentazione di un sistema: l’evoluzione da uno stato all’altro del sistema è legata all’applicazione di transizioni. Esempio: Un orologio digitale può essere rappresentato da un automa in cui ogni stato rappresenta l’ora e minuto corrente. Ci possono essere quindi 24x60=1440 possibili stati . . . 11.12 11.13 11.14 . . . Tino Cortesi Tecniche di Analisi di Programmi

Rappresentazione di un automa Un automa viene rappresentato denotando con cerchi gli stati del sistema e con frecce le transizioni da uno stato all’altro Esempio Un “contatore modulo 3” può essere rappresentato in forma completa dal seguente automa inc dec 1 dec dec inc inc 2 Tino Cortesi Tecniche di Analisi di Programmi

Automi finiti ed infiniti L’orologio digitale può essere visto come un contatore modulo 1440. Abbiamo visto che il “contatore modulo 3” ha tre stati Una variabile intera può essere modellata con un automa che ha un numero infinito di stati (uno per ogni possibile valore) e avente una transizione per ognuna delle operazioni elementari (incremento, decremento, cambio di segno, ecc.) Anche se esistono tecniche di model checking che si applicano a classi ristrette di automi con numero infinito di stati, il model checking si applica usualmente a sistemi rappresentabili come automi a stati finiti. Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Digicode Supponiamo di voler modellare un luchetto a combinazione, con sole tre chiavi A,B,C. Il luchetto si apre solo quando la combinazione ABA viene inserita. Questo sistema può essere rappresentato con un automa con 4 stati e 9 transizioni. Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Digicode B,C A A B A 1 2 3 4 C B,C Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Esecuzioni Una esecuzione è una sequenza di stati che descrive una possibile evoluzione del sistema Ad es. 1121, 12234, 112312234 sono esecuzioni del digicode Le possibili esecuzioni del digicode sono 1 11,12 111,112,121,122,123 1111,1112,1121,1122,1123,1211,1212,1221,1222,1223,1231,1234 … Queste possono essere organizzate sotto forma di albero Tino Cortesi Tecniche di Analisi di Programmi

Albero delle esecuzioni 1 1 2 1 2 1 2 3 1 2 1 2 3 1 2 1 2 3 1 4 Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Proprietà Il nostro obiettivo è verificare proprietà del sistema, o meglio verificare proprietà del modello del sistema Associamo quindi ad ogni stato dell’automa delle proprietà elementari che sappiamo essere soddisfatte in quello stato Ad esempio la proprietà “il luchetto è aperto” vale nello stato 4, ma non vale negli stati 1,2 e 3. Ma vorremmo dimostrare di più. Ad esempio: Se il luchetto si apre, allora le ultime lettere digitate sono ABA, in questo ordine Digitando una qualsiasi sequenza che termini con ABA si apre il luchetto Tino Cortesi Tecniche di Analisi di Programmi

Proposizione atomiche Per distinguere proprietà elementari da proprietà più complesse, parliamo di proposizione atomiche per denotare proprietà che sono vere o false in un dato stato. Nell’esempio del digicode, possiamo definire come proprietà elementari: PA : è stato appena digitato un A PB : è stato appena digitato un B PC : è stato appena digitato un C pred2 : lo stato precedente è il 2 pred3 : lo stato precedente è il 3 Tino Cortesi Tecniche di Analisi di Programmi

Automa con proposizioni atomiche B,C A 2 PA 3 pred2 PB 4 pred3 PA 1 A B A C B,C Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi B,C A 1 2 PA 3 pred2 PB 4 pred3 PA A B A C B,C Dimostriamo che se il luchetto si apre, allora le ultime lettere digitate sono ABA, in questo ordine Consideriamo un’esecuzione che apre il luchetto, cioè che finisce sullo stato 4 Poiché in 4 vale pred3, l’esecuzione deve finire con 34 Ma in 3 vale pred2. quindi l’esecuzione deve finire con 234. In 2 e 4 vale PA, ed in 3 vale PB . quindi le ultime tre lettere digitate devono essere ABA. Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Automi Dato un insieme di proposizioni elementari Pi, un automa è una tupla A =<Q,E,T,q0,l> in cui: Q è un insieme finito di stati E è un insieme finito di etichette di transizioni T Í Q x E x Q è un insieme di transizioni q0 è lo stato iniziale l è la funzione che associa ad ogni stato di Q l’insieme delle proprietà elementari che sono vere in quello stato Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi L’automa digicode B,C A 2 PA 3 pred2 PB 4 pred3 PA 1 A B A C B,C Q= {1,2,3,4} E={A,B,C} q0 = 1 l = { 1aÆ, 2a {PA},3a {PB, pred2}, 4a {PA,pred3} } T={ (1,A,2),(1,B,1),(1,C,1),(2,A,2),(2,B,3),(2,C,1), (3,A,4),(3,B,1),(3,C,1) } Tino Cortesi Tecniche di Analisi di Programmi

Paths, Esecuzioni, Stati raggiungibili Un path in un automa A è una sequenza s, finita o infinita, di transizioni (qi, ei, q’i) di A tale che per ogni i q’i= qi+1. La lunghezza di un path è il numero (potenzialmente infinito) di transizioni del path Una esecuzione parziale è un path che parte dallo stato iniziale Una esecuzione completa è un’esecuzione che non può essere estesa Uno stato è raggiungibile se esiste almeno un’esecuzione parziale (quindi che parte dallo stato iniziale) in cui esso appare. Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi PRINTER MANAGER W= wait P = print R = rest 0 RA RB endB endA reqA reqB 6 PA RB begA 1 WA RB 2 RA WB begB 7 RA PB reqB reqA endB endA 4 WA PB begB 3 WA WB begA 5 PA WB reqB reqA Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Proprietà che vorremmo verificare sul Printer Manager In ogni esecuzione, ogni stato in cui vale PA è preceduto da uno stato in cui vale WA Questa si può verificare! (… anche a mano) In ogni esecuzione ogni stato in cui vale WA è seguito (non necessariamente subito) da uno stato in cui vale PA. Questa non vale! E le tecniche di model checking in questo caso ci forniscono un controesempio… Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi IL PRINTER MANAGER NON E’ FAIR 0 RA RB endB endA reqA reqB 6 PA RB begA 1 WA RB 2 RA WB begB 7 RA PB reqB reqA endB endA 4 WA PB begB 3 WA WB begA 5 PA WB reqB reqA Controesempio: 0 1 3 4 1 3 4 1 3 4 1 3 4 1 3 4 1 3 4 … Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Automi con variabili Quando si vuole modellare un sistema, dobbiamo considerare anche variabili legate agli stati Se programma = controllo + dati la coppia <stati, transizioni> rappresenta il controllo Le variabili rappresentano dati Esempio: Nel sistema di “apertura luchetto”, se volessimo contare il numero di errori fatti dall’utente e volessimo tollerare al massimo 3 errori, dovremo introdurre una variabile intera ctr con valore iniziale 0, per accumulare il numero degli errori Tino Cortesi Tecniche di Analisi di Programmi

Interazione variabili-automa L’automa interagisce con le variabili in due modi: Assegnamento: una transizione può modificare il valore di una o più variabili Guardia: una transizione può essere determinata da una condizione sulle variabili: una transizione non può avvenire finché non vale una certa condizione sulle variabili. Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi int ctr; if ctr<3 B,C ctr++ if ctr<3 B,C ctr++ if ctr<3 A ctr++ ctr=0 A B A 2 3 4 1 if ctr<3 C ctr++ if ctr=3 A,C ctr++ if ctr=3 B,C ctr++ if ctr=3 B,C ctr++ err Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Unfolding Per applicare le tecniche di model checking è spesso necessario fare l’unfolding di automi con variabili in uno state graph in cui appaiono solo le possibili transizioni In questi casi si parla più propriamente di sistema di transizioni (transition system) Gli stati di un unfolded automa sono chiamati stati globali Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi 1 ctr=0 A 2 ctr=0 B 3 ctr=0 A 4 ctr=0 A B,C B,C 1 ctr=1 A 2 ctr=1 B 3 ctr=1 A 4 ctr=1 A B,C B,C 1 ctr=2 A 2 ctr=2 B 3 ctr=2 A 4 ctr=2 B,C A B,C 1 ctr=3 A 2 ctr=3 B 3 ctr=3 A 4 ctr=3 err ctr=4 Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Sincronizzazione Quando si ha a che fare con sistemi reali, questi sono composti da sottosistemi o moduli. Un automa globale si ottiene dalla cooperazione e sincronizzazione degli automi che corrispondono alle sottocomponenti del sistema La situazione più semplice è quando le sottocomponenti non interagiscono tra di loro. In questo caso l’automa globale è ottenuto facendo il prodotto cartesiano degli automi che rappresentano le componenti. Ad esempio, per modellare un sistema costituito da un contatore modulo 2, un contatore modulo 3 ed un contatore modulo 4, costruiremo un automa con 2x3x4 stati. Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi 1,0,3 1,1,3 1,2,3 0,0,3 0,1,3 0,2,3 1,0,2 1,1,2 1,2,2 0,0,2 0,1,2 0,2,2 1,0,1 1,1,1 1,2,1 0,0,1 0,1,1 0,2,1 1,0,0 1,1,0 1,2,0 0,0,0 0,1,0 0,2,0 Tino Cortesi Tecniche di Analisi di Programmi

Sincronizzazione mediante scambio di messaggi Distinguiamo tra le etichette delle transizioni quelle associate all’emissione di un messaggio !m e quelle associate alla ricezione di un messaggio ?m Nel prodotto sincronizzato saranno permesse solo le transizioni in cui una data emissione è eseguita contemporaneamente alla corrispondente ricezione Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Ascensore: la cabina ?down ?up ?up ?up 1 2 ?down ?down Tino Cortesi Tecniche di Analisi di Programmi

Ascensore: la i-esima porta ?close ?open_i ?open_i Closed Open ?close_i Tino Cortesi Tecniche di Analisi di Programmi

Ascensore: il controller !close_2 free2 on2 2->0 !open_2 !down !up !down !close_1 free1 on1 !open_1 !down !up 0->2 !close_0 free0 on0 !open_0 Tino Cortesi Tecniche di Analisi di Programmi

Ascensore: l’automa prodotto L’automa che modella l’ascensore si può quindi ottener come prodotto sincronizzato di questi 5 automi (3 porte, cabina, controller) Uno stato dell’automa risultante avrà quindi 5 componenti, corrispondenti allo stato della porta 0, porta 1, porta 2, cabina e controller I vincoli di sincronizzazione riducono le possibili transizioni alle emissioni sincronizzate con ricezioni si messaggi espresse da: Sync={ (?open0,-,-,-,!open0), (?close0,-,-,-,!close0), (-,?open1,-,-,!open1), (-,?close1,-,-,!close1), (-,-,?open2,-,!open2), (-,-,?close2,-,!close2), (-,-,-,?down,!down), (-,-,-,?up,!up) } Tino Cortesi Tecniche di Analisi di Programmi

Proprietà verificabili (1) La porta di un certo piano non si apre se la cabina è ad un piano diverso Per la porta 0 questa si traduce nel fatto che ogni stato che ha Open come prima componente ha 0 come quarta componente Questa proprietà si può esprimere usando proposizioni atomiche Idem per le altre porte Tino Cortesi Tecniche di Analisi di Programmi

Proprietà verificabili (2) La cabina non si muove se una delle porte è aperte Provare questa proprietà è più delicato: dobbiamo provare che in ogni esecuzione, uno stato in cui una delle prime 3 componenti è Open non può essere seguito immediatamente da uno stato in cui la quarta componente è diversa Una proprietà di questo tipo può essere verificata automaticamente da un model checker Tino Cortesi Tecniche di Analisi di Programmi

Sincronizzazione con variabili condivise Un altro modo per permettere la comunicazione tra sottosistemi è quello di lasciarli condividere alcune variabili Ad esempio, se vogliamo migliorare l’automa della stampante unfair descritta precedentemente, possiamo introdurre una variabile turn che indichi quale dei due utenti ha diritto di stampare Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Utente A ed utente B If turn=A printA x y turn=B If turn=B printB z t turn=A Tino Cortesi Tecniche di Analisi di Programmi

Stampante: automa globale L’automa globale che descrive il sistema includendo sia l’utente A che l’utente B può essere costruito da questi due automi e dal valore della variabile condivisa turn printA x,z,A y,z,A turn=A turn=B printB x,t,B x,z,B Tino Cortesi Tecniche di Analisi di Programmi

Tecniche di Analisi di Programmi Osservate che… Questo protocollo garantisce che non si raggiunga mai lo stato (y,t,-) Garantisce che non possa mai essere usata la stampante contemporaneamente Ma impedisce anche che ci possano essere due stampe consecutive da parte dello stesso utente!!! Tino Cortesi Tecniche di Analisi di Programmi