Combinazione di procedure di decisione nella verifica formale di software

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Combinazione di procedure di decisione nella verifica formale di software"

Transcript

1 Combinazione di procedure di decisione nella verifica formale di software Lorenzo Platania Tesi presentata per il conseguimento del titolo di Dottore in Ingegneria Informatica Relatore Correlatore Chiar. mo Prof. Alessandro Armando Dott. Jacopo Mantovani DIST Dipartimento di Informatica Sistemistica e Telematica Università degli Studi di Genova

2 Ringraziamenti Vorrei ringraziare tutte le persone che mi sono state vicine e mi hanno sopportato in tutti questi anni, in particolare i miei genitori. Ringrazio anche il mio relatore prof. Alessandro Armando ed il mio correlatore Jacopo Mantovani per aver reso possibile questo lavoro, per l aiuto e la pazienza mostratami.

3 Indice Ringraziamenti 1 Introduzione 1 2 Model Checking Introduzione Elementi di logica proposizionale Modello un sistema Strutture di Kripke Rappresentazione simbolica degli stati Specifica delle proprietà di un sistema Logica temporale CT L Verifica del modello rispetto alle proprietà Sistemi a stati infiniti e Model Checking Bounded Model Checking Cenni sulla combinazione di teorie Procedure di decisione nel Model Checking Risultati teorici sulla combinazione di teorie e decidibilità 21 4 Bounded Model Checking di programmi C Definizioni e convenzioni Introduzione Trasformazioni preliminari Srotolamento dei cicli Single assignment form Rinomina delle variabili Rimozione dei side effects Operatori condizionali e side effects Rimozione dei goto in avanti Generazione della formula I

4 4.8 Codifica e risoluzione della formula Analisi sperimentale Implementazione Formato dei programmi di input Formato dell output Uso di CVC-LITE Analisi sperimentale I benchmark Conclusioni 53 A 58 A.1 Istanza 3 di array init assign A.2 Formula C per array init assign3.c A.3 Formula U per array init assign3.c A.4 Formula P per array init assign3.c A.5 Traccia d errore per array init assign3.c II

5 Elenco delle figure 2.1 Esempio di BDT BDD per la formula (a b) (c d) con a < b < c < d BDD per la formula (a b) (c d) con a < c < d < b Struttura di Kripke Operatori CT L Contatore modulo Sostituzione di continue con goto Sostituzione di break con goto Sostituzione di costrutti switch Trasformazione di un costrutto for in while Trasformazione di un costrutto do in while Esempio di rinomina Espansione di chiamate a funzioni Esempio di rimozione di forward goto Risultati degli esperimenti su Bubble Sort Dimensioni delle formule generate dai due model checker con codifica degli interi a 32 bit durante gli esperimenti su Bubble Sort Risultati degli esperimenti su Selection Sort Risultati degli esperimenti su Insertion Sort Risultati degli esperimenti sull implementazione dell algoritmo Bellmann-Ford Dimensioni delle formule generate per l algoritmo Bellmann-Ford Risultati degli esperimenti su array init Risultati degli esperimenti su array init assign Risultati degli esperimenti su simple array inversion.c Risultati degli esperimenti su array max.c Risultati per successione di Fibonacci Risultati per somma dei primi n numeri III

6

7 Capitolo 1 Introduzione Il software ha assunto, nelle ultime decine di anni, un importanza rilevante in molte aree della nostra società, quali, ad esempio quella medico-sanitaria, dei trasporti, delle telecomunicazioni e della produzione industriale. Di conseguenza, l affidabilità e la correttezza del software è un argomento di grande attualità. La storia è ormai ricca di esempi di difetti nel software che hanno portato a conseguenze tragiche. Tra gli esempi disponibili in letteratura possiamo citare il caso di Therac-25 [LT93], una macchina per l emissione di radiazioni a scopo terapeutico controllata dal computer. Vari errori presenti nel software di gestione, oltre che nell intero processo di sviluppo, hanno provocato, su alcuni pazienti, un overdose di radiazioni con effetti anche mortali. La presenza di errori all interno del software ha anche un notevole impatto economico sia per gli effetti causati, sia per le risorse allocate nel processo di rilevazione e correzione dei difetti. A titolo di esempio, citiamo uno studio, pubblicato nel maggio 2002, commissionato dal NIST (National Institute of Standards and Technology del governo degli Stati Uniti) [RTI02], in cui si stima che l economia americana trarrebbe un vantaggio economico pari a 59,5 miliardi di dollari se fosse possibile rilevare e correggere istantaneamente ogni errore presente nel software. La verifica di sistemi software è stata ed è tradizionalmente eseguita per mezzo di tecniche di testing. Nonostante queste si siano evolute e raffinate nel tempo, difficilmente potranno mai essere esaustive e garantire la correttezza dell intero sistema oggetto di verifica. Ciò è particolarmente vero quando l oggetto della verifica è un sistema complesso, in quanto esso può presentare comportamenti spesso non determinabili a priori. Per contro, le tecniche di verifica formale si occupano di considerare ogni possibile evoluzione del sistema, allontanando ogni dubbio circa l esistenza di errori non considerati. Tra queste ricordiamo la tecnica di Model Checking, inizialmente proposta 1

8 per la verifica automatica di sistemi a stati finiti quali, ad esempio, sistemi hardware. In particolare essa, quando usata in combinazione con i Binary Decision Diagram (BDD) [Bry86], ha permesso di verificare sistemi con un numero di stati superiore a Un ulteriore evoluzione, anch essa inizialmente proposta per la verifica di componenti hardware, è rappresentata dal Bounded Model Checking (BMC), che riduce il problema di verifica a quello di stabilire la soddisfacibilità di una formula proposizionale. In esso, le possibili evoluzioni ed i requisiti del sistema vengono codificati con una formula proposizionale. Gli eventuali modelli della formula ottenuta corrispondono ad una violazione, da parte del sistema, di almeno uno dei requisiti specificati. Un estensione di questa tecnica, affinchè potesse essere usata, oltre che per l hardware, anche per la verifica di programmi C, è stata proposta in [CKY03, CKSY04]. La sua implementazione ha dato origine al model checker CBMC (C Bounded Model Checking). I risultati ottenuti con questa tecnica si sono rivelati molto positivi, come dimostrato dal fatto che con essa sono stati verificati un implementazione dell algoritmo per cifratura DES, il sistema anticollisione aerea TCAS (Traffic Alert and Collision Advoidance System) ed il µc/0s-ii, un kernel per micropocessore. In quest ultimo caso CBMC ha rilevato, in quasi 3000 linee di codice, un errore nel protocollo di locking che non era ancora noto. La tecnica implementata da CBMC presenta alcuni limiti: vi sono, infatti, diverse istanze di programmi per cui CBMC genera una formula di dimensioni troppo elevate da non poter essere decise in tempi e con risorse ragionevoli. Contributo della tesi Il contributo di questa tesi consiste nello sviluppo di una generalizzazione dell approccio di [CKY03] che tiene conto delle considerazioni fatte in precedenza. Tale generalizzazione sfrutta la disponibilità di efficaci procedure di decisione per verificare efficientemente un ampia classe di programmi. Abbiamo mostrato come la codifica in formule in teorie più ricche (come per esempio quella dell aritmetica lineare e quella degli array) porti alla generazione di formule più compatte, che quindi possono essere decise più velocemente. Abbiamo anche realizzato un prototipo, chiamato SMT-CBMC, che implementa tale approccio e che fa uso di CVC-LITE per stabilire la soddisfacibilità delle formule generate. L implementazione ha convalidato quanto considerato circa le dimensioni della codifica e circa l efficacia del nostro approccio. Gli esperimenti sono stati condotti su una selezione di programmi di uso comune, quali alcuni algoritmi d ordinamento ed un algoritmo per la 2

9 ricerca del percorso minimo tra due nodi in un grafo, e su alcuni programmi sintetici già adoperati come benchmark in letteratura Struttura del documento Nel capitolo 2 vengono presentati i fondamenti teorici su cui si basa questa tesi. In particolare, dopo aver introdotto alcuni concetti di base della logica proposizionale, descriviamo un formalismo per modellare il comportamento di alcune classi di sistemi ed un esempio di logica temporale adatta per descrivere le proprietà di un sistema. In seguito si descrivono i risultati teorici su cui è stata sviluppata la tecnica di Bounded Model Checking. Nel capitolo 3 vengono descritte le teorie dell aritmetica lineare, degli array e dei bit vector e vengono forniti alcuni cenni sulla combinazione di teorie. Nel capitolo 4 viene mostrato in cosa consiste la tecnica introdotta in [CKY03] per il Bounded Model Checking di programmi C. Inoltre si descrive come tale tecnica possa essere generalizzata, come la formula proposizionale ottenuta può essere codificata e quali sono le conseguenze del tipo di codifica usato. Nel capitolo 5 viene descritto il prototipo SMT-CBMC ed i benchmark su cui è stata valutata l efficacia dell approccio presentato in questa tesi. Vengono inoltre mostrati i risultati degli esperimenti condotti e confrontati con quelli ottenuti con il bounded model checker CBMC. 3

10 Capitolo 2 Model Checking In questo capitolo, dopo alcuni richiami teorici di logica proposizionale, spieghiamo in cosa consiste il Model Checking e descriviamo alcuni dei suoi limiti. Inoltre, introduciamo la tecnica di Bounded Model Checking, mostriamo sotto quali condizioni tali tecniche sono equivalenti, e come ridurre il problema di Bounded Model Checking al problema di soddisfacibilità di una formula proposizionale. 2.1 Introduzione La tecnica di model checking [EMCGP99] è comunemente usata per la verifica automatica di sistemi rispetto ad alcune proprietà specificate. Il processo di model checking può essere suddiviso nelle fasi di: 1. costruzione di un modello che rappresenti il sistema trascurando tutti i dettagli non significativi al fine della verifica. Spesso, i sistemi da verificare sono di tipo reattivo [MP95], ovvero sistemi che interagiscono con l ambiente esterno. Il comportamento di sistemi di questo tipo può essere ben descritto da sistemi stati-transizione, ovvero da grafi orientati in cui i nodi rappresentano i possibili stati del sistema (definiti dai valori assunti dalle variabili di stato del sistema stesso) e gli archi le transizioni da uno stato al suo successore; 2. specifica delle proprietà che si desidera il sistema soddisfi durante il suo evolvere nel tempo. Ciò può essere fatto per mezzo di una qualche logica temporale. 3. verifica del modello del sistema rispetto alle proprietà specificate. Essa consiste, in ultima analisi, in una ricerca esaustiva dello spazio degli 4

11 stati del sistema, al fine di determinare se le proprietà specificate sono verificate o meno all interno di tale spazio. Questa fase è totalmente automatizzata e richiede l intervento umano solo per l analisi del risultato. Nel caso in cui il sistema non soddisfi le specifiche, il processo di model checking mostra la sequenza di stati che porta il sistema a violare una proprietà. Tale sequenza è detta traccia. Dall analisi della traccia si possono ricavare informazioni utili per apportare le necessarie correzioni al sistema in oggetto. È anche possibile che il processo di model checking termini prima di aver completato la verifica del sistema, a causa di insufficienza di risorse per la computazione. In questo caso, l utilizzo di un modello più astratto che tralasci alcuni dettagli non essenziali, può rendere praticabile l utilizzo di procedure di model checking. Il processo di model checking presenta notevoli vantaggi sia rispetto a tecniche semi-formali come il testing, sia rispetto ad altre tecniche formali, quali il theorem proving o l abstract interpretation. Rispetto alle prime, infatti, il model checking garantisce la completa esplorazione dello spazio degli stati, difficilmente ottenibile durante il processo di testing. Rispetto alle seconde, invece, il model checking non richiede un frequente intervento umano nella fase di verifica e può fornire un esempio di come il sistema violi una qualche proprietà. Nel seguito del capitolo, dopo aver introdotto i concetti base della logica proposizionale, mostreremo in dettaglio le singole fasi del model checking. Parleremo inoltre di come è possibile applicare le procedure di Model Checking su sistemi a stati infiniti e, a tal proposito, analizzeremo la tecnica del Bounded Model Checking. 2.2 Elementi di logica proposizionale Sintassi Un linguaggio proposizionale L è costituito da un alfabeto e da una grammatica. L alfabeto, che definisce quali simboli possono essere usati all interno del linguaggio, è costituito da: un insieme L di lettere proposizionali p, q, r,..., dette variabili atomiche, atomi proposizionali o più semplicemente atomi un insieme di connettivi,,, un insieme di simboli ausiliari (, ) 5

12 La grammatica, che descrive come i simboli dell alfabeto possono essere combinati per ottenere formule accettabili (formule ben formate), è definita dalle regole: ogni p L è una formula e sono formule se A 1 e A 2 sono formule, sono formule anche (A 1 A 2 ), (A 1 A 2 ), ( A 1 ) nient altro è una formula Semantica La semantica della logica proposizionale è definita tramite la nozione di interpretazione. Un interpretazione è una funzione che assegna valori di verità ad atomi. Sulla base dei valori così assegnati e delle regole che seguono la definizione di interpretazione, è possibile stabilire il valore di verità di una qualsiasi formula proposizionale. Definizione 2.1 (Valore di verità) Un valore di verità è un elemento dell insieme D := T rue, F alse Quando non vi sarà ambiguità, indicheremo i valori T rue e F alse rispettivamente con i simboli e, già utilizzati nel definire la sintassi di un linguaggio proposizionale. Avremo, quindi, che D :=,. Definizione 2.2 (Interpretazione) Sia dato l insieme L degli atomi proposizionali. Un interpretazione I è una funzione da L nel dominio, ovvero I : L D. In altre parole, la funzione d interpretazione assegna un valore di verità ad ogni membro di un insieme di atomi proposizionali. Il concetto di interpretazione può essere esteso induttivamente anche ai casi di formule con connettivi logici. Siano ϕ e ψ formule proposizionali. Allora: I( ) =, I( ) = ; I(ϕ ψ) = se e solo se I(ϕ) = e I(ψ) = ; I(ϕ ψ) = se e solo se I(ϕ) = o I(ψ) = ; I( ϕ) = se e solo se I(ϕ) = ; 6

13 Se per una formula ϕ ed un interpretazione I si ha I(ϕ) = (rispettivamente, I(ϕ) = ), diciamo che ϕ è vera (falsa) in I e denotiamo ciò con I = ϕ (I = ψ). Riassumendo, un interpretazione I lega ogni formula ϕ ad un valore di verità. Informalmente, con valore di una formula denotiamo il valore di verità cui essa è legata. Se una formula ϕ è vera in un interpretazione I, allora diciamo che I soddisfa ϕ o, analogamente, ϕ è soddisfatta da I, o che I costituisce un modello per ϕ. Una formula ϕ è valida se e solo se è vera per ogni possibile interpretazione I. Gli operatori, e, comunemente usati, sono stati tralasciati per semplicità. Essi sono comunque esprimibili per mezzo degli operatori,, tramite le seguenti equivalenze: ϕ ψ = ϕ ψ ϕ ψ = ( ϕ ψ) ( ψ ϕ) ϕ ψ = ( ϕ ψ) ( ψ ϕ) 2.3 Modello un sistema Il primo passo da compiere, nel processo di Model Checking, è la realizzazione di un modello del sistema da analizzare. Il livello di dettaglio del modello dovrà essere sufficiente a cogliere tutti gli aspetti rilevanti del sistema, tralasciandone, al tempo stesso, le caratteristiche non significative, in modo da non rendere più complesso del necessario il processo di verifica Strutture di Kripke Consideriamo sistemi di tipo reattivo, ovvero dei sistemi in grado di interagire con il loro ambiente e che evolvono indefinitamente nel tempo. Sistemi di questo tipo possono essere ben modellati attraverso un tipo di grafo statotransizione detto struttura di Kripke. Definizione 2.3 (Struttura di Kripke) Sia AP un insieme di proposizioni atomiche. Una struttura di Kripke M definita su AP è una tupla M = (S, In, R, L) dove 1. S è un insieme finito non vuoto detto insieme degli stati di M. 2. In S è un insieme non vuoto di stati detto insieme degli stati iniziali di M. 3. R S S è una relazione di transizione totale, ovvero, per ogni stato s S esiste un s S tale che R(s, s ). 7

14 4. L : S 2 AP è una funzione che etichetta ogni stato con l insieme di proposizioni atomiche che sono vere in quello stato. Siano V = v 1,..., v n le variabili del sistema considerato. Uno stato del sistema s è dato dalla valutazione delle variabili v i (i = 1,..., n) in s, ovvero, uno stato è una valutazione s : V D, dove D è il dominio dei valori che possono essere assunti dalle variabili. Un percorso π in M è una sequenza infinita di stati s 0 s 1 s 2... tale che, per ogni i 0, valga la relazione R(s i, s i+1 ). Nel caso in cui uno stato s non abbia successore, possiamo estendere la relazione R in modo che sia vera R(s, s) Rappresentazione simbolica degli stati Le strutture di Kripke sono rappresentabili con formule proposizionali negli atomi di AP. Poichè la rappresentazione di un sistema dai molti stati tende ad essere di grandi dimensioni, mostriamo un metodo per mantenerla compatta. Ogni formula proposizionale booleana può essere rappresentata in maniera efficace, e generalmente compatta, per mezzo di una particolare struttura dati che prende il nome di Binary Decision Diagram (BDD) [Bry86]. Le caratteristiche citate per i BDD vengono messe in evidenza dal confronto con un altra struttura dati, i Binary Decision Tree (BDT). Un BDT è un albero binario in cui ogni nodo è associato ad una variabile ed ogni arco uscente è associato ad un valore di verità. Per determinare il valore di verità della formula rappresentata da un BDT, in presenza di un assegnamento delle variabili, è sufficiente attraversare l albero a partire dalla radice: dopo aver visitato un nodo, si percorre l arco corrispondente al valore assegnato alla variabile associata ad esso, ripetendo l operazione fino ad incontrare un nodo foglia (esempio in figura 2.1). Un BDD tenta di eliminare le ridondanze presenti nel BDT, combinando sotto-alberi isomorfi in un unico albero ed eliminando i nodi i cui sotto-alberi sono isomorfi (esempio in figura 2.2). Il processo che porta a conoscere il valore di verità di una formula rappresentata da un BDD è del tutto analogo a quello per i BDT, ma può richiedere meno iterazioni. È bene notare che l efficienza di un BDD nel rappresentare una formula proposizionale dipende fortemente dall ordinamento scelto per le variabili (si veda figura 2.3). 2.4 Specifica delle proprietà di un sistema Spesso, le proprietà che si desiderano soddisfatte da un sistema sono legate al concetto di tempo. Per esempio si può desiderare che una proprietà sia verificata per tutte le configurazioni del sistema che seguono il presentarsi di 8

15 a 0 1 b b c c c c d d d d d d d d Figura 2.1: BDT per la formula (a b) (c d) con a < b < c < d a 1 0 b 0 c d Figura 2.2: BDD per la formula (a b) (c d) con a < b < c < d 9

16 a 0 1 c 1 0 c 1 d 0 d b Figura 2.3: BDD per la formula (a b) (c d) con a < c < d < b un qualche stato. Per esprimere relazioni temporali tra stati si può fare uso di un qualche tipo di logica temporale. Nel seguito descriviamo, a titolo di esempio, la logica temporale CT L (Computational Tree Logic) descritta in [EMCGP99] Logica temporale CT L L uso della logica temporale nel model checking è stato introdotto all inizio degli anni 80 in [CE82]. Questo tipo di logica permette di descrivere come la sequenza di stati evolve senza menzionare esplicitamente il tempo, ma facendo riferimento alla sequenza con cui essi si presentano. La logica CT L rappresenta un valido esempio di logica temporale, grazie alla sua potenza espressiva. Essa permette di descrivere proprietà temporali riferendosi ad un albero di computazione, ovvero ad un albero ottenuto srotolando, a partire da uno stato scelto come radice, la struttura di Kripke del sistema in oggetto. In pratica, l albero di computazione rappresenta tutte le possibili evoluzioni del sistema a partire dallo stato scelto come iniziale (vedi esempio in figura 2.4). All interno della logica CT L abbiamo due tipi di formule: 1. formule di stato, che fanno riferimento ad un determinato stato 2. formule di percorso, che fanno riferimento ad un dato percorso 10

17 a a b c b c a c c Figura 2.4: Struttura di Kripke e corrispondente albero di computazione Sia AP un insieme di atomi proposizionali. La sintassi delle formule CT L è così definita: se p AP allora p è una formula di stato se f e g sono formule di stato, allora f, f g e f g sono formule di stato se f è una formula di percorso, allora E f e A f sono formule di stato se f è una formula di stato, allora f è anche una formula di percorso se f e g sono formule di percorso, allora f, f g, f g, X f, F f, G f, f E g e f E g sono formule di percorso se f e g sono formule di stato, allora X f, F f, G f, f U g ed f R g sono formule di percorso. In altre parole, ogni operatore temporale deve essere immediatamente preceduto da un quantificatore di percorso. Le formule CT L fanno uso di quantificatori di percorso e di operatori temporali. I primi sono usati per associare le proprietà a tutti o ad alcuni dei percorsi che partono dal nodo considerato. In particolare, i quantificatori di percorso sono: A: per ogni percorso; E: esiste un percorso. Gli operatori temporali, invece, descrivono proprietà temporali di un singolo percorso. In particolare, siano φ e ψ due formule: Xφ richiede che φ valga nello stato immediatamente successivo al corrente 11

18 Fφ richiede che φ valga in un qualche stato futuro del percorso considerato Gφ richiede che φ valga in ogni stato del percorso considerato φuψ richiede che ψ valga in qualche stato del percorso e che φ sia verificata in ogni stato precedente φrψ richiede che ψ valga fino allo stato in cui vale φ. Comunque, φ potrebbe non essere mai verificata. È possibile definire la semantica della logica temporale CT L facendo riferimento ad una generica struttura di Kripke M = (S, In, R, L) (si veda paragrafo 2.3.1) dove, ricordiamo, S è l insieme degli stati, R S S è la relazione di transizione ed L : S 2 AP è una funzione che etichetta ogni stato con l insieme di proposizioni atomiche vere in quello stato. Un percorso π in M è una sequenza di stati s 0, s 1,..., tale che, per ogni i 0, (s i, s i+1 ) R. Con π i denotiamo il suffisso di π che comincia da s i. Se f è una formula di stato, con M, s = f intendiamo dire che f è vera nello stato s della struttura di Kripke M. Analogamente, se f è una formula di percorso, M, π = f indica che f è vera lungo il percorso π della struttura di Kripke M. Assumendo che f 1 ed f 2 siano formule di stato e g 1 e g 2 siano formule di percorso, la relazione = è definita per induzione come segue: M, s = p p L(s) M, s = f 1 M, s f 1 M, s = f 1 f 2 M, s = f 1 o M, s = f 2 M, s = f 1 f 2 M, s = f 1 e M, s = f 2 M, s = E g 1 esiste un percorso π che parte da s tale che M, π = g 1 M, s = A g 1 per ogni percorso π che parte da s M, π = g 1 M, π = f 1 s è il primo stato di π e M, s = f 1 M, π = g 1 M, π g 1 M, π = g 1 g 2 M, π = g 1 om, π = g 2 M, s = g 1 g 2 M, π = g 1 e M, π = g 2 M, π = X g 1 M, π 1 = g 1 M, π = F g 1 esiste un k 0 tale che M, π k = g 1 M, π = G g 1 per ogni i 0, M, π i = g 1 12

19 M, π = g 1 U g 2 esiste un k 0 tale che M, π k = g 2 e per ogni 0 j k, M, π j = g 1 M, π = g 1 R g 2 per ogni 0 j, se per ogni i jm, π i g 1 allora M, π j = g 2 g g g g M, s 0 =EF g M, s 0 =AF g g g g g g g g g g g M, s 0 =EG g M, s 0 =AG g Figura 2.5: Esempi sul significato di alcuni operatori CT L 2.5 Verifica del modello rispetto alle proprietà Data una struttura di Kripke M = (S, In, R, L), che rappresenta un sistema a stati finiti, e una formula di logica temporale f, che esprime una qualche specifica desiderata, il problema del model checking consiste nel trovare tutti gli stati in S che soddisfano f, ovvero s S M, s f Un sistema soddisfa la specifica f se tutti i suoi stati iniziali sono in tale insieme. 13

20 2.6 Sistemi a stati infiniti e Model Checking Quando il sistema da verificare è, per esempio, un circuito elettronico, l ipotesi di finitezza dello spazio degli stati risulta essere soddisfatta grazie ad aspetti fisici del sistema: il numero di componenti del circuito e finito, ed è quindi sufficiente un numero finito di atomi proposizionali per modellare il loro comportamento. Tale ipotesi è fondamentale nel determinare l utilizzabilità pratica del model checking in quanto ne garantisce la terminazione. Il processo di model checking, infatti, può richiedere l esplorazione di tutti gli stati del sistema, al fine di determinare se una data proprietà è soddisfatta da esso o no. Spesso, però, i sistemi considerati non possiedono un numero di stati finito. È questo il caso tipico dei sistemi software in cui, ad esempio, è frequente trovare variabili che possono assumere valori in un dominio infinito e cicli la cui terminazione non è garantita. Per poter applicare anche in questi casi le procedure di model checking, sono state realizzate delle tecniche di modellamento del sistema che rendono praticabile l approccio fin qui visto. Tra queste possiamo ricordare l astrazione ed il bounded model checking Bounded Model Checking L utilizzo della rappresentazione simbolica dei sistemi ha permesso di poter applicare il Model Checking a sistemi di dimensioni maggiori rispetto a quanto poteva essere fatto utilizzando una rappresentazione esplicita. L uso dei BDD ha invece permesso una più agile manipolazione delle formule logiche che rappresentano il sistema, nonostante questo approccio possa ancora soffrire del problema dell esplosione dello spazio degli stati. Il Bounded Model Checking [BCCZ99], in un certo senso, rappresenta un ulteriore evoluzione delle tecniche di Model Checking. Esso infatti, grazie all efficacia delle procedure di decisione per formule proposizionali, generalmente fornisce velocemente un controesempio di lunghezza minima e, rispetto ai metodi basati sui BDD, usa meno risorse e le sue prestazioni non dipendono dall ordinamento scelto per le variabili: trovare l ordinamento ottimo per ottenere il BDD più piccolo possibile è infatti un problema NP completo. Nel bounded model checking vengono considerati percorsi di lunghezza prefissata k, ovvero si verifica se una proprietà è soddisfatta da un sistema per sequenze di stati di lunghezza non superiore a k. Per questa ragione il Bounded Model Checking risulta più versatile per la ricerca di errori piuttosto che per la verifica. Infatti, considerando percorsi di lunghezza k, non è possibile affermare nulla su quel che può accadere nelle successive evoluzioni del sistema. Ciò nonostante, quando la lunghezza dei percorsi considerati supera il diametro dello spazio degli stati, si può concludere che la proprietà rispetto alla quale 14

21 abiamo verificato il sistema è garantita essere soddisfatta. Sfortunatamente, nel caso di sistemi a stati infiniti, tale diametro è anch esso infinito. In questi casi è in generale possibile garantire il rispetto di una proprietà solo per percorsi di lunghezza finita. Esempio di Bounded Model Checking per un contatore modulo quattro Mostriamo ora un esempio di bounded model checking tratto da [BCCZ99]. Consideriamo il contatore a due bit la cui struttura di Kripke è mostrata in figura 2.6. Ognuno dei quattro stati è descritto dai valori dei due atomi proposizionali s(1) ed s(0) che denotano, rispettivamente, il bit più significativo e quello meno significativo. Lo stato iniziale è caratterizzato dal valore (00) del contatore, ed è descritto dalla formula I definita come ( s(1) s(0)). Sia s lo stato attuale ed s il suo successivo. La relazione di transizione T (s, s ) deve descrivere l incremento del contatore ad ogni passo. Definiamo inc(s, s ) come (s (0) s(0)) (s (1) (s(0) s(1))) e T (s, s ) come inc(s, s ) ((s(0) s(1)) (s (0) s (1))). Si noti che il sistema così descritto presenta un errore che rende possibile la transizione dallo stato (10) allo stato (10) stesso. Supponiamo di richiedere che il sistema raggiunga, prima o poi, lo stato (11). Questa proprietà può essere descritta in logica temporale tramite la formula AF(q), con q = (s(0) s(1)) la quale richiede che, in ogni percorso d esecuzione, valga q := s(0) s(1). Equivalentemente, possiamo cercare un percorso nel quale sia vera p := ( s(0) s(1)), concetto espresso dalla formula EG(p), ovvero cercare un controesempio della proprietà che si desidera soddisfatta dal sistema in esame. Come è tipico fare nel Bounded Model Checking, anzichè cercare un qualsiasi percorso nel quale sia soddisfatta EG(p), concentriamo l analisi su percorsi di lunghezza k, ovvero percorsi con k +1 stati. Considerando k = 2, imponiamo che i k +1 stati s 0, s 1, s 2 costituiscano un percorso valido che parte dallo stato iniziale. Facciamo ciò attraverso la formula [[M]] 2 := I T (s 0, s 1 ) T (s 1, s 2 ) nella quale abbiamo descritto lo stato iniziale ed espresso la relazione di transizione per i due passi considerati. Inoltre, dobbiamo imporre che il sistema abbia un ciclo che porta dallo stato s 2 ad un qualsiasi stato del sistema 1. Introduciamo quindi la formula logica L 2 := T (s 2, s 0 ) T (s 2, s 1 ) T (s 2, s 2 ). Infine richiediamo che la proprietà p sia vera in ogni stato del percorso considerato, introducendo la formula [[Gp]] 2 := L 2 p(s 0 ) p(s 1 ) p(s 2 ). Il risultato del modellamento del sistema è dato dalla formula [[M]] 2 [[Gp]] 2, che è sod- 1 È necessario imporre ciò affinchè i percorsi considerati siano di lunghezza infinita, come richiesto dalla tecnica di Model Checking. Ulteriori spiegazioni verranno date nel seguito del capitolo 15

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

Interpretazione astratta

Interpretazione astratta Interpretazione astratta By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents Interpretazione astratta... 2 Idea generale... 2 Esempio di semantica... 2 Semantica concreta... 2 Semantica

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il concetto di Algoritmo e di Calcolatore Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Cos

Dettagli

Planning as Model Checking Presentazione della Tesina di Intelligenza Artificiale

Planning as Model Checking Presentazione della Tesina di Intelligenza Artificiale Planning as Model Checking Presentazione della Tesina di Intelligenza Artificiale di Francesco Maria Milizia francescomilizia@libero.it Model Checking vuol dire cercare di stabilire se una formula è vera

Dettagli

Università degli Studi di Napoli Federico II. Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica

Università degli Studi di Napoli Federico II. Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Università degli Studi di Napoli Federico II Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Anno Accademico 2009/2010 Appunti di Calcolabilità e Complessità Lezione 9: Introduzione alle logiche

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

Capitolo 7: Teoria generale della calcolabilitá

Capitolo 7: Teoria generale della calcolabilitá Capitolo 7: Teoria generale della calcolabilitá 1 Differenti nozioni di calcolabilitá (che seguono da differenti modelli di calcolo) portano a definire la stessa classe di funzioni. Le tecniche di simulazione

Dettagli

Idee guida. Finite State Machine (1) Un automa a stati finiti è definito da una 5- pla: FSM = , dove: Finite State Machine (2)

Idee guida. Finite State Machine (1) Un automa a stati finiti è definito da una 5- pla: FSM = <Q,,, q0, F>, dove: Finite State Machine (2) Idee guida ASM = FSM con stati generalizzati Le ASM rappresentano la forma matematica di Macchine Astratte che estendono la nozione di Finite State Machine Ground Model (descrizioni formali) Raffinamenti

Dettagli

16.3.1 Alberi binari di ricerca

16.3.1 Alberi binari di ricerca 442 CAPITOLO 16. STRUTTURE DI DATI DINAMICHE root 7 5 11 2 8 13 10 Figura 16.11 Esempio di albero binario: ogni nodo contiene il dato da immagazzinare e tre puntatori che definiscono le sue relazioni di

Dettagli

Componenti di un sistema KNOWLEDGE-BASED

Componenti di un sistema KNOWLEDGE-BASED Componenti di un sistema KNOWLEDGE-BASED DYNAMIC DATABASE PROBLEM FORMALIZATION CONTROL STRATEGY IL DATABASE DESCRIVE LA SITUAZIONE CORRENTE NELLA DETERMINAZIONE DELLA SOLUZIONE AL PROBLEMA. LA FORMALIZZAZIONE

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

La macchina universale

La macchina universale La macchina universale Una immediata conseguenza della dimostrazione è la seguente Corollario il linguaggio L H = {M (w) M rappresenta una macchina di Turing che si ferma con input w} sull alfabeto {0,1}*

Dettagli

x u v(p(x, fx) q(u, v)), e poi

x u v(p(x, fx) q(u, v)), e poi 0.1. Skolemizzazione. Ogni enunciato F (o insieme di enunciati Γ) è equisoddisfacibile ad un enunciato universale (o insieme di enunciati universali) in un linguaggio estensione del linguaggio di F (di

Dettagli

Tipologie di macchine di Turing

Tipologie di macchine di Turing Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Risoluzione. Eric Miotto Corretto dal prof. Silvio Valentini 15 giugno 2005

Risoluzione. Eric Miotto Corretto dal prof. Silvio Valentini 15 giugno 2005 Risoluzione Eric Miotto Corretto dal prof. Silvio Valentini 15 giugno 2005 1 Risoluzione Introdurremo ora un metodo per capire se un insieme di formule è soddisfacibile o meno. Lo vedremo prima per insiemi

Dettagli

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma. Semantica dei programmi La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma. Semantica operazionale: associa ad ogni programma la sequenza delle sue

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

Corso di Laurea in INFORMATICA

Corso di Laurea in INFORMATICA Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica

Dettagli

Linguaggi. Claudio Sacerdoti Coen 11/04/2011. 18: Semantica della logica del prim ordine. Universitá di Bologna

Linguaggi. Claudio Sacerdoti Coen 11/04/2011. 18: Semantica della logica del prim ordine. <sacerdot@cs.unibo.it> Universitá di Bologna Linguaggi 18: Semantica della logica del prim ordine Universitá di Bologna 11/04/2011 Outline Semantica della logica del prim ordine 1 Semantica della logica del prim ordine Semantica

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Calcolatori: Algebra Booleana e Reti Logiche

Calcolatori: Algebra Booleana e Reti Logiche Calcolatori: Algebra Booleana e Reti Logiche 1 Algebra Booleana e Variabili Logiche I fondamenti dell Algebra Booleana (o Algebra di Boole) furono delineati dal matematico George Boole, in un lavoro pubblicato

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Programma di Paradigmi e possibili domande. Capitolo 1

Programma di Paradigmi e possibili domande. Capitolo 1 Definizione di macchina astratta Programma di Paradigmi e possibili domande Capitolo 1 Una macchina astratta per il linguaggio L detta ML, è un qualsiasi insieme di algoritmi e strutture dati che permettono

Dettagli

Introduzione. Informatica B. Daniele Loiacono

Introduzione. Informatica B. Daniele Loiacono Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione

Dettagli

2 Progetto e realizzazione di funzioni ricorsive

2 Progetto e realizzazione di funzioni ricorsive 2 Progetto e realizzazione di funzioni ricorsive Il procedimento costruttivo dato dal teorema di ricorsione suggerisce due fatti importanti. Una buona definizione ricorsiva deve essere tale da garantire

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

Metodi formali per la verifica dell affidabilità di sistemi software (e hardware) (Peled, Software Reliability Methods, cap. 1) Importanza della

Metodi formali per la verifica dell affidabilità di sistemi software (e hardware) (Peled, Software Reliability Methods, cap. 1) Importanza della Metodi formali per la verifica dell affidabilità di sistemi software (e hardware) (Peled, Software Reliability Methods, cap. 1) Importanza della verifica di sistemi (safety-critical, commercially critical,

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

Dettagli

5. La teoria astratta della misura.

5. La teoria astratta della misura. 5. La teoria astratta della misura. 5.1. σ-algebre. 5.1.1. σ-algebre e loro proprietà. Sia Ω un insieme non vuoto. Indichiamo con P(Ω la famiglia di tutti i sottoinsiemi di Ω. Inoltre, per ogni insieme

Dettagli

Progetto e analisi di algoritmi

Progetto e analisi di algoritmi Progetto e analisi di algoritmi Roberto Cordone DTI - Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Tel. 0373 / 898089 E-mail: cordone@dti.unimi.it Ricevimento: su appuntamento

Dettagli

Testing: basato su analisi dinamica del codice. Metodi Formali: basato su analisi statica del codice.

Testing: basato su analisi dinamica del codice. Metodi Formali: basato su analisi statica del codice. Convalida: attività volta ad assicurare che il SW sia conforme ai requisiti dell utente. Verifica: attività volta ad assicurare che il SW sia conforme alle specifiche dell analista. Goal: determinare malfunzionamenti/anomalie/errori

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Parte 3. Rango e teorema di Rouché-Capelli

Parte 3. Rango e teorema di Rouché-Capelli Parte 3. Rango e teorema di Rouché-Capelli A. Savo Appunti del Corso di Geometria 203-4 Indice delle sezioni Rango di una matrice, 2 Teorema degli orlati, 3 3 Calcolo con l algoritmo di Gauss, 6 4 Matrici

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione La Codifica dell informazione (parte 1) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente:

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Oggetti sintattici e oggetti semantici Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P.

Dettagli

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. A partire da questa lezione, ci occuperemo di come si riescono a codificare con sequenze binarie, quindi con sequenze di 0 e 1,

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Novembre 2011 1 Contenuti q Somma di una sequenza di numeri interi

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Varianti Macchine di Turing

Varianti Macchine di Turing Varianti Macchine di Turing Esistono definizioni alternative di macchina di Turing. Chiamate Varianti. Tra queste vedremo: MdT a più nastri e MdT non deterministiche. Mostriamo: tutte le varianti ragionevoli

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

2) Codici univocamente decifrabili e codici a prefisso.

2) Codici univocamente decifrabili e codici a prefisso. Argomenti della Lezione ) Codici di sorgente 2) Codici univocamente decifrabili e codici a prefisso. 3) Disuguaglianza di Kraft 4) Primo Teorema di Shannon 5) Codifica di Huffman Codifica di sorgente Il

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

I metodi formali nel processo di sviluppo del software

I metodi formali nel processo di sviluppo del software I metodi formali nel processo di sviluppo del software I metodi formali consentono di creare una specifica più completa, uniforme e non ambigua di quelle prodotte usando i metodi convenzionali ed orientati

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

IL MODELLO RELAZIONALE

IL MODELLO RELAZIONALE IL MODELLO RELAZIONALE E i vincoli per le basi di dati relazionali 2 La storia Introdotto nel 1970 da E. F. Ted Codd http://en.wikipedia.org/wiki/edgar_f._codd (centro ricerche IBM) Codd, E.F. (1970).

Dettagli

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Test del Software. Definizione SCOPO LIMITI DEL TEST

Test del Software. Definizione SCOPO LIMITI DEL TEST Definizione! Verifica dinamica del comportamento del software rispetto a quello atteso, utilizzando un insieme finito di casi di test, appropriatamente selezionati nel dominio di tutti i casi possibili

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o

Dettagli

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto) Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Sede di Latina Laurea in Ingegneria dell Informazione Fasi del ciclo di vita del software (riassunto) Corso di PROGETTAZIONE DEL SOFTWARE

Dettagli

b i 1,1,1 1,1,1 0,1,2 0,3,4

b i 1,1,1 1,1,1 0,1,2 0,3,4 V o Appello // RICERCA OPERATIVA - Corso A (a.a. 9/) Nome Cognome: Corso di Laurea: L C6 LS LM Matricola: ) Si consideri il problema di flusso di costo minimo in figura. Si verifichi se il flusso ammissibile

Dettagli

Progettazione del Software A.A.2008/09

Progettazione del Software A.A.2008/09 Laurea in Ing. Informatica ed Ing. dell Informazione Sede di latina Progettazione del Software A.A.2008/09 Domenico Lembo* Dipartimento di Informatica e Sistemistica A. Ruberti SAPIENZA Università di Roma

Dettagli

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010 elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre

Dettagli

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo L. De Giovanni G. Zambelli 1 Problema del flusso a costo minimo Il problema del flusso a costo minimo é definito

Dettagli

Appunti di Logica Matematica

Appunti di Logica Matematica Appunti di Logica Matematica Francesco Bottacin 1 Logica Proposizionale Una proposizione è un affermazione che esprime un valore di verità, cioè una affermazione che è VERA oppure FALSA. Ad esempio: 5

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Cos è un Calcolatore?

Cos è un Calcolatore? Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per

Dettagli

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

Nozione di algoritmo. Gabriella Trucco

Nozione di algoritmo. Gabriella Trucco Nozione di algoritmo Gabriella Trucco Programmazione Attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari informazioni (dati), allo scopo di risolvere

Dettagli

If a cascata, switch, boolean

If a cascata, switch, boolean If a cascata, switch, boolean If a cascata Switch Il tipo boolean Operatori logici, valutazione pigra 1 If a cascata Consideriamo una semplice classe che deve descrivere con una stringa gli effetti di

Dettagli

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura

Dettagli

Reti sequenziali e strutturazione firmware

Reti sequenziali e strutturazione firmware Architettura degli Elaboratori, a.a. 25-6 Reti sequenziali e strutturazione firmware Alla parte di corso sulle reti sequenziali è apportata una sensibile semplificazione rispetto a quanto contenuto nel

Dettagli

STRUTTURE NON LINEARI

STRUTTURE NON LINEARI PR1 Lezione 13: STRUTTURE NON LINEARI Michele Nappi mnappi@unisa.it www.dmi.unisa.it/people/nappi Per la realizzazione della presentazione è stato utilizzato in parte materiale didattico prodotto da Oronzo

Dettagli

La programmazione con vincoli in breve. La programmazione con vincoli in breve

La programmazione con vincoli in breve. La programmazione con vincoli in breve Obbiettivi Introdurre la nozione di equivalenza di CSP. Dare una introduzione intuitiva dei metodi generali per la programmazione con vincoli. Introdurre il framework di base per la programmazione con

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Fondamenti di Informatica. Computabilità e Macchine di Turing. Prof. Franco Zambonelli Gennaio 2011

Fondamenti di Informatica. Computabilità e Macchine di Turing. Prof. Franco Zambonelli Gennaio 2011 Fondamenti di Informatica Computabilità e Macchine di Turing Prof. Franco Zambonelli Gennaio 2011 Letture Consigliate: Roger Penrose, La Mente Nuova dell Imperatore, Sansoni Editrice. Martin Davis, Il

Dettagli

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme G Pareschi Principio di induzione Il Principio di Induzione (che dovreste anche avere incontrato nel Corso di Analisi I) consente di dimostrare Proposizioni il cui enunciato è in funzione di un numero

Dettagli

Elementi di semantica operazionale

Elementi di semantica operazionale Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione

Dettagli

Modellazione di sistema

Modellazione di sistema Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Modellazione di sistema E. TINELLI Contenuti Approcci di analisi Linguaggi di specifica Modelli di

Dettagli

Dispense del corso di Logica a.a. 2015/16: Problemi di primo livello. V. M. Abrusci

Dispense del corso di Logica a.a. 2015/16: Problemi di primo livello. V. M. Abrusci Dispense del corso di Logica a.a. 2015/16: Problemi di primo livello V. M. Abrusci 12 ottobre 2015 0.1 Problemi logici basilari sulle classi Le classi sono uno dei temi della logica. Esponiamo in questa

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Fondamenti di calcolo booleano

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Fondamenti di calcolo booleano Breve introduzione storica Nel 1854, il prof. Boole pubblica un trattato ormai famosissimo: Le leggi del pensiero. Obiettivo finale del trattato è di far nascere la matematica dell intelletto umano, un

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, > Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Serie numeriche e serie di potenze

Serie numeriche e serie di potenze Serie numeriche e serie di potenze Sommare un numero finito di numeri reali è senza dubbio un operazione che non può riservare molte sorprese Cosa succede però se ne sommiamo un numero infinito? Prima

Dettagli

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso 1 Introduzione all informatica: algoritmi, linguaggi e programmi Indice 1. Introduzione 2. Risoluzione automatica di problemi - Algoritmi

Dettagli

Trattamento degli errori

Trattamento degli errori Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Trattamento degli errori Giacomo PISCITELLI Trattamento degli errori Comunemente gli errori di programmazione

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli