Combinazione di procedure di decisione nella verifica formale di software

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

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

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

Algebra di Boole ed Elementi di Logica

Algebra di Boole ed Elementi di Logica Algebra di Boole ed Elementi di Logica 53 Cenni all algebra di Boole L algebra di Boole (inventata da G. Boole, britannico, seconda metà 8), o algebra della logica, si basa su operazioni logiche Le operazioni

Dettagli

Ragionamento Automatico Model checking. Lezione 12 Ragionamento Automatico Carlucci Aiello, 2004/05Lezione 12 0. Sommario. Formulazione del problema

Ragionamento Automatico Model checking. Lezione 12 Ragionamento Automatico Carlucci Aiello, 2004/05Lezione 12 0. Sommario. Formulazione del problema Sommario Ragionamento Automatico Model checking Capitolo 3 paragrafo 6 del libro di M. Huth e M. Ryan: Logic in Computer Science: Modelling and reasoning about systems (Second Edition) Cambridge University

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

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

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

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Si basano sul seguente Teorema: S = A sse S { A} è insoddisfacibile.

Si basano sul seguente Teorema: S = A sse S { A} è insoddisfacibile. Deduzione automatica La maggior parte dei metodi di deduzione automatica sono metodi di refutazione: anziché dimostrare direttamente che S A, si dimostra che S { A} è un insieme insoddisfacibile (cioè

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Albero semantico. Albero che mette in corrispondenza ogni formula con tutte le sue possibili interpretazioni.

Albero semantico. Albero che mette in corrispondenza ogni formula con tutte le sue possibili interpretazioni. Albero semantico Albero che mette in corrispondenza ogni formula con tutte le sue possibili interpretazioni. A differenza dell albero sintattico (che analizza la formula da un punto di vista puramente

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Alberi binari. Ilaria Castelli castelli@dii.unisi.it A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Alberi binari. Ilaria Castelli castelli@dii.unisi.it A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione Alberi binari Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Alberi binari, A.A. 2009/2010 1/20 Alberi binari

Dettagli

Flusso a costo minimo e simplesso su reti

Flusso a costo minimo e simplesso su reti Flusso a costo minimo e simplesso su reti La particolare struttura di alcuni problemi di PL può essere talvolta utilizzata per la progettazione di tecniche risolutive molto più efficienti dell algoritmo

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Logica del primo ordine

Logica del primo ordine Università di Bergamo Facoltà di Ingegneria Intelligenza Artificiale Paolo Salvaneschi A7_4 V1.3 Logica del primo ordine Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio

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

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

ALGEBRA I: CARDINALITÀ DI INSIEMI

ALGEBRA I: CARDINALITÀ DI INSIEMI ALGEBRA I: CARDINALITÀ DI INSIEMI 1. CONFRONTO DI CARDINALITÀ E chiaro a tutti che esistono insiemi finiti cioè con un numero finito di elementi) ed insiemi infiniti. E anche chiaro che ogni insieme infinito

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Introduzione Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Il problema del massimo flusso è uno dei fondamentali problemi nell ottimizzazione su rete. Esso è presente

Dettagli

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

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

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

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

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

Linguaggi del I ordine - semantica. Per dare significato ad una formula del I ordine bisogna specificare

Linguaggi del I ordine - semantica. Per dare significato ad una formula del I ordine bisogna specificare Linguaggi del I ordine - semantica Per dare significato ad una formula del I ordine bisogna specificare Un dominio Un interpretazione Un assegnamento 1 Linguaggi del I ordine - semantica (ctnd.1) Un modello

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

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Se a e b sono numeri interi, si dice che a divide b, in simboli: a b, se e solo se esiste c Z tale che b = ac. Si può subito notare che:

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme 1. L insieme R. Per lo svolgimento del corso risulta particolarmente utile considerare l insieme R = R {, + }, detto anche retta reale estesa, che si ottiene aggiungendo all insieme dei numeri reali R

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

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

Ricorsione. Rosario Culmone. - p. 1/13

Ricorsione. Rosario Culmone. - p. 1/13 Ricorsione Rosario Culmone - p. 1/13 Induzione e Ricorsione Spesso utilizzeremo le definizioni induttive. Sono forme di definizione compatte che descrivono un numero infinito di elementi. I contesti di

Dettagli

ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA

ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA 1. RICHIAMI SULLE PROPRIETÀ DEI NUMERI NATURALI Ho mostrato in un altra dispensa come ricavare a partire dagli assiomi di

Dettagli

1. Intorni di un punto. Punti di accumulazione.

1. Intorni di un punto. Punti di accumulazione. 1. Intorni di un punto. Punti di accumulazione. 1.1. Intorni circolari. Assumiamo come distanza di due numeri reali x e y il numero non negativo x y (che, come sappiamo, esprime la distanza tra i punti

Dettagli

Minimizzazione di Reti Logiche Combinatorie Multi-livello

Minimizzazione di Reti Logiche Combinatorie Multi-livello Minimizzazione di Reti Logiche Combinatorie Multi-livello Maurizio Palesi Maurizio Palesi 1 Introduzione Obiettivo della sintesi logica: ottimizzazione delle cifre di merito area e prestazioni Prestazioni:

Dettagli

Così come le macchine meccaniche trasformano

Così come le macchine meccaniche trasformano DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Il Consiglio Scientifico della rivista ha pensato di attuare un iniziativa culturalmente utile presentando in ogni numero di Mondo Digitale un argomento

Dettagli

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione Processi (di sviluppo del) software Fase di Analisi dei Requisiti Un processo software descrive le attività (o task) necessarie allo sviluppo di un prodotto software e come queste attività sono collegate

Dettagli

Indicizzazione terza parte e modello booleano

Indicizzazione terza parte e modello booleano Reperimento dell informazione (IR) - aa 2014-2015 Indicizzazione terza parte e modello booleano Gruppo di ricerca su Sistemi di Gestione delle Informazioni (IMS) Dipartimento di Ingegneria dell Informazione

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12

Seconda Prova di Ricerca Operativa. Cognome Nome Numero Matricola A 1/12 A 2/12 A / A / Seconda Prova di Ricerca Operativa Cognome Nome Numero Matricola Nota: LA RISOLUZIONE CORRETTA DEGLI ESERCIZI CONTRADDISTINTI DA UN ASTERISCO È CONDIZIONE NECESSARIA PER IL RAGGIUNGIMENTO DELLA

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

Tipologie di pianificatori. Pianificazione. Partial Order Planning. E compiti diversi. Pianificazione gerarchica. Approcci integrati

Tipologie di pianificatori. Pianificazione. Partial Order Planning. E compiti diversi. Pianificazione gerarchica. Approcci integrati Tipologie di pianificatori Pianificazione Intelligenza Artificiale e Agenti II modulo Pianificazione a ordinamento parziale (POP) (HTN) pianificazione logica (SatPlan) Pianificazione come ricerca su grafi

Dettagli

Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova. Metodi per supportare le decisioni relative alla gestione di progetti

Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova. Metodi per supportare le decisioni relative alla gestione di progetti Project Management Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova Project Management 2 Metodi per supportare le decisioni relative alla gestione di progetti esempi sono progetti nell

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Ricorsione. Corso di Fondamenti di Informatica

Ricorsione. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Ricorsione Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e

Dettagli

AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Unified Process. Prof. Agostino Poggi

AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Unified Process. Prof. Agostino Poggi AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Unified Process Prof. Agostino Poggi Unified Process Unified Software Development Process (USDP), comunemente chiamato

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Dall italiano alla logica proposizionale

Dall italiano alla logica proposizionale Rappresentare l italiano in LP Dall italiano alla logica proposizionale Sandro Zucchi 2009-10 In questa lezione, vediamo come fare uso del linguaggio LP per rappresentare frasi dell italiano. Questo ci

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

10. Insiemi non misurabili secondo Lebesgue.

10. Insiemi non misurabili secondo Lebesgue. 10. Insiemi non misurabili secondo Lebesgue. Lo scopo principale di questo capitolo è quello di far vedere che esistono sottoinsiemi di R h che non sono misurabili secondo Lebesgue. La costruzione di insiemi

Dettagli

Dall italiano al linguaggio della logica proposizionale

Dall italiano al linguaggio della logica proposizionale Dall italiano al linguaggio della logica proposizionale Dall italiano al linguaggio della logica proposizionale Enunciati atomici e congiunzione In questa lezione e nelle successive, vedremo come fare

Dettagli

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente Minimo sottografo ricoprente Minimo sottografo ricoprente Dato un grafo connesso G = (V, E) con costi positivi sugli archi c e, un minimo sottografo ricoprente è un insieme di archi E E tale che: G = (V,

Dettagli

Ascrizioni di credenza

Ascrizioni di credenza Ascrizioni di credenza Ascrizioni di credenza Introduzione Sandro Zucchi 2014-15 Le ascrizioni di credenza sono asserzioni del tipo in (1): Da un punto di vista filosofico, i problemi che pongono asserzioni

Dettagli

Dispense del Corso di Algoritmi e Strutture Dati

Dispense del Corso di Algoritmi e Strutture Dati Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo Edoardo Bontà Università degli Studi di Urbino Carlo Bo Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Applicata Versione

Dettagli

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera L. De Giovanni AVVERTENZA: le note presentate di seguito non hanno alcuna pretesa di completezza, né hanno lo scopo di sostituirsi

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

LA FUNZIONE ESPONENZIALE E IL LOGARITMO

LA FUNZIONE ESPONENZIALE E IL LOGARITMO LA FUNZIONE ESPONENZIALE E IL LOGARITMO APPUNTI PER IL CORSO DI ANALISI MATEMATICA I G. MAUCERI Indice 1. Introduzione 1 2. La funzione esponenziale 2 3. Il numero e di Nepero 9 4. L irrazionalità di e

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

Ricerca non informata in uno spazio di stati

Ricerca non informata in uno spazio di stati Università di Bergamo Facoltà di Ingegneria Intelligenza Artificiale Paolo Salvaneschi A5_2 V2.4 Ricerca non informata in uno spazio di stati Il contenuto del documento è liberamente utilizzabile dagli

Dettagli

IL PROBLEMA DELLO SHORTEST SPANNING TREE

IL PROBLEMA DELLO SHORTEST SPANNING TREE IL PROBLEMA DELLO SHORTEST SPANNING TREE n. 1 - Formulazione del problema Consideriamo il seguente problema: Abbiamo un certo numero di città a cui deve essere fornito un servizio, quale può essere l energia

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Logica del primo ordine

Logica del primo ordine Logica del primo ordine Sistema formale sviluppato in ambito matematico formalizzazione delle leggi del pensiero strette relazioni con studi filosofici In ambito Intelligenza Artificiale logica come linguaggio

Dettagli

Esistenza di funzioni continue non differenziabili in alcun punto

Esistenza di funzioni continue non differenziabili in alcun punto UNIVERSITÀ DEGLI STUDI DI CAGLIARI FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI CORSO DI LAUREA IN MATEMATICA Esistenza di funzioni continue non differenziabili in alcun punto Relatore Prof. Andrea

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense Linguaggio del calcolatore Circuiti e reti combinatorie ppendice + dispense Solo assenza o presenza di tensione: o Tante componenti interconnesse che si basano su e nche per esprimere concetti complessi

Dettagli

Esercitazioni per il corso di Logica Matematica

Esercitazioni per il corso di Logica Matematica Esercitazioni per il corso di Logica Matematica Luca Motto Ros 14 marzo 2005 Nota importante. Queste pagine contengono appunti personali dell esercitatore e sono messe a disposizione nel caso possano risultare

Dettagli

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31 Le Liste Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Le Liste 1 / 31 Cos è una Lista Una lista è una collezione di elementi omogenei che: potrebbero

Dettagli

EQUAZIONI non LINEARI

EQUAZIONI non LINEARI EQUAZIONI non LINEARI Francesca Pelosi Dipartimento di Matematica, Università di Roma Tor Vergata CALCOLO NUMERICO e PROGRAMMAZIONE http://www.mat.uniroma2.it/ pelosi/ EQUAZIONI non LINEARI p.1/44 EQUAZIONI

Dettagli

Algebra Relazionale. algebra relazionale

Algebra Relazionale. algebra relazionale Algebra Relazionale algebra relazionale Linguaggi di Interrogazione linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica linguaggi programmativi SQL: Structured Query Language

Dettagli

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

+ P a n n=1 + X. a n = a m 3. n=1. m=4. Per poter dare un significato alla somma (formale) di infiniti termini, ricorriamo al seguente procedimento:

+ P a n n=1 + X. a n = a m 3. n=1. m=4. Per poter dare un significato alla somma (formale) di infiniti termini, ricorriamo al seguente procedimento: Capitolo 3 Serie 3. Definizione Sia { } una successione di numeri reali. Ci proponiamo di dare significato, quando possibile, alla somma a + a 2 +... + +... di tutti i termini della successione. Questa

Dettagli

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Cenni su algoritmi, diagrammi di flusso, strutture di controllo Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni

Dettagli

Matematica B - a.a 2006/07 p. 1

Matematica B - a.a 2006/07 p. 1 Matematica B - a.a 2006/07 p. 1 Definizione 1. Un sistema lineare di m equazioni in n incognite, in forma normale, è del tipo a 11 x 1 + + a 1n x n = b 1 a 21 x 1 + + a 2n x n = b 2 (1) = a m1 x 1 + +

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Prof. Caterina Rizzi Dipartimento di Ingegneria Industriale

Prof. Caterina Rizzi Dipartimento di Ingegneria Industriale RUOLO DELLA MODELLAZIONE GEOMETRICA E LIVELLI DI MODELLAZIONE PARTE 2 Prof. Caterina Rizzi... IN QUESTA LEZIONE Modelli 2D/3D Modelli 3D/3D Dimensione delle primitive di modellazione Dimensione dell oggettoy

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

VC-dimension: Esempio

VC-dimension: Esempio VC-dimension: Esempio Quale è la VC-dimension di. y b = 0 f() = 1 f() = 1 iperpiano 20? VC-dimension: Esempio Quale è la VC-dimension di? banale. Vediamo cosa succede con 2 punti: 21 VC-dimension: Esempio

Dettagli