Indice. 4 CTL Introduzione... 37

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Indice. 4 CTL 37 4.1 Introduzione... 37"

Transcript

1 Indice 1 Introduzione Verifica di sistemi Metodi formali Simulazione Testing Verifica Formale Model checking Reti di Petri Introduzione Reti e sistemi P/T Analisi Tecniche enumerative Generazione dello spazio degli stati Tools GreatSPN SMART Generazione simbolica dello spazio degli stati Introduzione Decision Diagram Binary Decision Diagram Multi-Way Decision Diagram Generazione RS con DD Strutture simboliche nei tools CTL Introduzione

2 2 INDICE 4.2 Sintassi Semantica Model Checker Model Checker tradizionale Model Checker simbolico Model checker CTL e Reti di Petri Proposizioni atomiche per PN Realizzazione DD e librerie Struttura del model checker Test e migliorie Lavori futuri A Modelli utilizzati nei test 67 A.1 Dining philosophers A.1.1 Proprietà testate A.2 Flexible manufacturing system A.2.1 Proprietà testate

3 Capitolo 1 Introduzione 1.1 Verifica di sistemi Cosa accadrebbe se un antifurto domestico da un momento all altro iniziasse a non funzionare correttamente? L integrazione di tecnologie informatiche, in campi applicativi sempre piú vari, é in continua crescita e ha portato la societá a fare un elevato uso, diretto e indiretto, di dispositivi tecnologici. Negli anni é aumenta la fiducia che si ripone nel corretto funzionamento di sistemi con componenti hardware e software portandoci ad affidare, in tutta tranquilitá, il controllo di casa ad un antifurto. É importante peró che questa fiducia non risulti mal riposta: un telecomando che non cambia canale crea del disagio ma un antifurto che non segnala un intrusione puó recare un bel danno. Se giá nel piccolo é molto importante l affidabilitá di un sistema, si provi a pensare a quanto sia indispensabile in sistemi critici per la sicurezza come sistemi di controllo di volo, di allarme antincendio, di controllo di macchinari sanitari o di controllo di reattori nucleari. Il malfunzionamento di uno di questi sistemi puó portare perdite di vite umane. Con la complessitá dei sistemi aumenta anche la probabilitá che siano affetti da errori. Nel processo di realizzazione di un sistema l individuazione di eventuali errori per tempo ha un notevole impatto sia sui costi di produzione che sugli aspetti di sicurezza. Una testimonianza di ció é l errore nella divisione floating point, riscontrato in un processore Intel dopo il lancio sul mercato, ha causato una perdita di circa 500 milioni di dollari statunitensi all azienda produttrice (nel 1994).

4 4 Introduzione Da queste premesse é facile capire quanto sia indispensabile e importante avere un processo di verifica di sistemi per determinare la correttezza di specifiche, progetti e prodotti. La richiesta di maggiore affidabilitá, insieme all aumento della complessitá dei sistemi, ha portato allo sviluppo di tecniche e strumenti che facilitano l analisi automatica della correttezza. La pratica piú diffusa per garantire l affidabilitá di un sistema, software e non, é quella di validare i prototipi realizzati dopo lunghe fasi di analisi dei requisiti e progettazione. Trovare errori alla fine della fase di realizzazione rende costoso porvi rimedio. É quindi molto piú efficacie alternare fasi di disegno a fasi di validazione. Principalmente sono due le tecniche che vengono ampiamente utilizzate per controllare che il risultato finale sia effettivamente ció che si desidera: peer reviewing e testing. Il peer reviewing é un attivitá completamente manuale, prevede che il progetto venga revisionato da un insieme di sviluppatori esperti ma esterni ad esso. Il testing serve a controllare se la realizzazione di un dato sistema é conforme alle specifiche iniziali. Si effettua generando dei test manualmente o con l ausilio di strumenti software. L elevato danno economico che puó causare un malfunzionamento fa sí che, nella realizzazione di un progetto, vengano dedicati maggior tempo e risorse alla validazione del sistema che alla sua costruzione. 1.2 Metodi formali Attraverso metodi formali, un sistema viene descritto con termini precisi e non ambigui. La validazione di sistemi basata su metodi formali é molto utile nella verifica hardware e nella verifica di protocolli di comunicazione. Nell ingegneria del software, invece, se ne fa ancora un uso limitato. Le tecniche di validazione con metodi formali piú importanti sono: la simulazione, il testing, la verifica formale e il model checking Simulazione La simulazione si esegue su un modello che descrive i comportamenti del sistema. Attraverso strumenti software é possibile determinare la reazione del modello, quindi anche del sistema, ad un determinato scenario. É molto utile per stabilire la qualitá del sistema progettato, ma non sempre si riesce a rappresentare tutti gli scenari.

5 1.2 Metodi formali Testing Il metodo tradizionale per valutare la correttezza di un sistema é quello di testarne il comportamento. Per fare ció si prende l implementazione del sistema, gli si danno degli input scelti (test) e si controlla il risultato con quello atteso. Con questa tecnica, peró, si prende in esame solo un sottoinsieme dei possibili comportamenti del sistema. Difficilmente la verifica attraverso test é completa. A tal proposito ricordiamo le parole di Dijkstra: il testing puó solo mostrare la presenza di errori ma non garantirne l assenza. Nonostante ció il testing é complementare agli altri metodi di verifica. In alcuni casi puó essere l unico metodo applicabile, ad esempio quando non si puó realizzare un modello (che potrebbe risultare troppo complesso) o quando si devono verificare componenti di terze parti. Il massiccio uso del testing ha aumentato l interesse a sviluppare tecniche formali da applicare ad esso, ne é un esempio l ISO Questa ISO divide il testing in fasi per generare, selezionare, implementare ed eseguire test e per analizzare i risultati Verifica Formale La verifica formale consiste nel provare la correttezza del sistema attraverso dimostrazioni matematiche. L idea alla base di questa tecnica é quella di rappresentare in un formalismo logico-matematico il sistema e le specifiche desiderate e di dimostrare, se possibile, che il sistema rispetta le specifiche Model checking Un altro tipo di metodo formale per la verifica é il model checking. Questo metodo si basa su algoritmi (implementati all interno di strumenti software) che verificano delle proprietá sul modello del sistema. In questo modo il processo di verifica é completamente automatico e l utente deve solo fornire la descrizione formale del modello del sistema e delle specifiche. Si possono distinguere due approcci diversi di model checking, uno basato sulla logica e l altro sul comportamento. Il primo approccio valuta se le specifiche espresse come proprietá logiche sono valide per il modello. L approccio alternativo é quello che prevede di modellare sia il comportamento del sistema che quello desiderato per poi cercare l equivalenza tra i due. Questi due approcci sono connessi dal concesso di equivalenza: due modelli hanno un comportamento equivalente se verificano le stesse proprietá.

6 6 Introduzione Per dare una definizione di model checking possiamo dire che Definizione 1.1. Il model checking é una tecnica automatiche che, dati un modello a stati finiti di un sistema e delle proprietá logiche, controlla sistematicamente se queste proprietá sono mantenute nel sistema per un dato stato iniziale. Le tecniche di model checking possono applicarsi a piú campi e non solo all ingegneria del software. Ma, mentre sono appropriate per applicazioni control-intensive, sono quasi inutilizzabili in caso di applicazioni dataintensive. Questo perché il modello di un sistema di trattamento dati genera uno spazio degli stati infinito. É peró possibile effettuare verifiche parziali modellando solo alcune parti del sistema (le piú semplici o le piú critiche) e controllando solo alcune specifiche, magari le piú significative. Come giá detto, questa é una verifica automatica e per questo non richiede molta interazione con gli utenti, ma é indispensabile che il modello e le proprietá siano ben definite da un esperto. La correttezza egli algoritmi, dimostrata in letteratura, garantisce la correttezza della valutazione del model checker. Bisogna peró ricordare che solo le proprietá richieste sono state controllate e che, se il modello le soddisfa, non é garantito che anche il sistema lo faccia. In conclusione il model checking puó accrescere significativamente il livello di affidabilitá del sistema. I modelli e le proprietá Molti sistemi reali possono essere classificati come Discrete Event Dynamic System (DEDS). Questi sistemi sono caratterizzati da un comportamento determinato dallo stato in cui si trovano e dal verificarsi di eventi aleatori. I modelli di questi sistemi sono automi a stati discreti e finiti. Definizione 1.2 (Modello a stati discreti). Un modello a stati discreti é specificato da: χ pot il potenziale spazio degli stati χ init χ pot l insieme degli stati iniziali, spesso solo uno ε l insieme degli eventi N α : χ pot 2 χpot la funzione di passaggio di stato al presentarsi di un evento

7 1.2 Metodi formali 7 A l insieme delle proposizioni atomiche L : χ pot 2 A la funzione che assegna ad ogni stato le preposizioni atomiche che soddisfa Le tecniche utilizzate sono quindi sensibili al numero degli stati dell automa. Tale numero puó eccedere rendendo lo spazio degli stati troppo vasto per essere rappresentato in memoria e manipolato dai model checker. Questo problema riguarda,in particolare, sistemi paralleli e distribuiti. La dimensione dello spazio degli stati di questi sistemi, nel caso peggiore, é proporzionale al prodotto della dimensione dello spazio degli stati dei componenti singoli. In letteratura questo argomento viene chiamato problema di esplosione dello spazio degli stati (state-space explosion problem). Vedremo in questa tesi un metodo sviluppato per affrontarlo. Nel prossimo capitolo verrá descritto il formalismo delle reti di Petri (utilizzato dal model checker realizzato) che permette di realizzare modelli per sistemi DEDS. Il modello di un sistema a stati discreti, per come definito sopra, richiede la specifica di un insieme di proposizioni atomiche e una funzione di etichettatura. Le proposizioni atomiche descrivono le proprietá che puó soddisfare uno stato. La funzione L assegna ad ogni stato il sottoinsieme di proposizioni atomiche che soddisfa. Le proprietá che si richiede al modello si esprimono costruendo formule logiche: proposizioni atomiche combinate attraverso operatori logici. Nel capitolo 4 verrá presentata la logica formale che scelta per il model checker realizzato.

8 8 Introduzione

9 Capitolo 2 Reti di Petri 2.1 Introduzione Le Reti di Petri (Petri Nets o PN) sono un formalismo matematico ideato da Carl Adam Petri nel 1962 [10]. Esse danno origine ad una famiglia di formalismi matematici utili a descrivere sistemi dinamici ad eventi discreti (DEDS). Tipicamente questi sistemi hanno evoluzioni parallele e comportamenti complessi dovuti alla presenza di fasi di sincronizzazione per la condivisione delle risorse. Vedremo come questo formalismo, nonostante la sua semplicitá, agevoli la loro rappresentazione grafica. La natura grafica delle PN le rende intuitive, anche per i meno esperti, mentre le fondamenta matematiche garantiscono la correttezza dell analisi. Un modello di un sistema dinamico descritto con le reti di Petri si divide in due parti: una struttura a rete (P/T net), rappresentata graficamente come un grafo bipartito, che costituisce la componente statica del sistema. I due tipi di nodi sono chiamati posti e transizioni, rispettivamente rappresentati con cerchi e rettangoli. I posti costituiscono le componenti (o variabili) dello stato di un sistema, mentre le transizioni descrivono gli eventi che andranno a modificare tale stato. una marcatura, rappresentata graficamente con dei token all?nterno dei posti, che indica il valore della componente di stato rappresentata dal posto. La marcatura di un posto é data dalla presenza o meno di token.

10 10 Reti di Petri La distinzione tra struttura della rete e comportamento si riflette direttamente sui metodi di analisi. Una classe di metodi si basa sullo spazio degli stati (determinato dal comportamento della rete) e l altra classe prende in esame solo la struttura. I metodi di analisi strutturali possono essere utilizzati per provare alcune proprietá statiche come la mutua esclusione o per migliorare l efficienza dell analisi dello spazio degli stati. In questo capitolo l attenzione verrá riposta sull analisi dello spazio degli stati, per chi fosse interessato ad approfondire l analisi strutturale puó trovare un ampia argomentazione nei riferimenti bibliografici.trova bibliografia es match book I metodi di analisi basati sullo spazio degli stati richiedono la generazione di tutti gli stati raggiungibili a partire da quello iniziale. Spesso si tratta di un numero molto elevato e, in alcuni casi, addirittura infinito (insieme rappresentabile solo attraverso particolari strutture). Lo stato di un sistema PN é dato dalla marcatura di tutti i suoi posti. Dopo aver generato tutto lo spazio degli stati é possibile verificare delle proprietá stato per stato. Alcuni esempi di proprietá che necessitano di essere controllate stato per stato sono: l assenza di deadlock (il sistema non raggiunge stati dai quelli non puó uscire), la vivezza di un evento (da ogni stato é sempre possibile raggiungere un altro stato in cui l evento dato puó scatenarsi), la presenza di un un home state (uno stato raggiungibile da ogni altro stato). Un sistema PN consiste in una P/T net con una marcatura iniziale. Il comportamento dinamico del sistema é dato dalle regole di evoluzione espresse dagli archi e dalle iscrizioni su di essi. Una transizione puó scattare se i posti di input hanno un numero sufficiente di token. Lo scatto di una transizione modifica il valore dei posti in input e dei posti in output. La prima parte di questo capitolo é dedicato all introduzione del formalismo base delle PN, dove i passaggi di stato vengono governati solo dalle regole di evoluzione della rete e non da eventi esterni come lo scorrere del tempo. Il formalismo base é conosciuto come autonome PN ed a partire da esso, specificando altre regole di evoluzione, sono state definite delle sottoclassi di PN. Nella seconda parte del capitolo verranno illustrate le tecniche di generazione ed analisi dello spazio degli stati.

11 2.2 Reti e sistemi P/T Reti e sistemi P/T In questa sezione introdurremo formalmente le PN e mostreremo un esempio di come sia possibile utilizzarle per modellare un sistema. In una PN gli stati vengono descritti da un insieme di variabili rappresentate dai posti. Il passaggio da uno stato all altro comporta la modifica dei valori di una o piú variabili ed é modellato attraverso le transizioni. Ogni transizione rappresenta un evento ed é legata attraverso archi pesati ad un insieme di posti. Questi posti rappresentano le variabili che l evento modifica. Definizione 2.1. Una P/T net é una quadrupla: N = P, ε, D, D + dove: P é l insieme finito e non vuoto dei posti ε é l insieme finito e non vuoto delle transizioni con P ε = D : P ε N + é la funzione che definisce il peso di ogni arco in ingresso nelle transizioni D + : P ε N + é la funzione che definisce il peso di ogni arco in uscita dalle transizioni É utile rappresentare le funzioni D e D + in forma matriciale utilizzando i posti come indice di riga e le transizioni come indice di colonna. indicare il peso dell arco tra p e t useremo la notazione Dp,t, quando questo valore é uguale a zero indica l assenza dell arco. Il valore di ogni variabile rappresentata da un posto é descritto attraverso il concetto di marcatura. Graficamente la marcatura di un posto é rappresentata attraverso dei puntini neri (token) disegnati all interno. Definizione 2.2. La marcatura di una rete é la funzione m : P N + che assegna ad ogni posto un numero naturale (numero di token). Infine un sistema di Reti di Petri é definito dalla sua struttura e da uno stato iniziale descritto da una marcatura. Definizione 2.3. Un sistema PN consiste in una coppia S = (N, m 0 ) dove: N é una rete P/T m 0 é la marcatura iniziale Per

12 12 Reti di Petri Finora abbiamo introdotto la definizione della struttura di una rete e di uno stato, ora vedremo come viene descritto il passaggio di stato attraverso il concetto di scatto di transizione. Lo scatto di una transizione modifica lo stato e quindi la marcatura del sistema. Una transizione puó scattare solo se abilitata. Definizione 2.4. Una transizione t ε é abilitata in una marcatura m se e solo se p P Dp,t m(p). L abilitazione di transizione in una marcatura viene denotata m[t >. Da questa definizione possiamo notare che in una determinata marcatura ci possono essere piú transizioni abilitata. La scelta di quale transizione far scattare non é deterministica. Vedremo di seguito cosa comporta lo scatto delle transizioni. Definizione 2.5. Lo scatto di una transizione t ε abilitata in una marcatura m produce la marcatura m dove p P m (p) = m(p) + D p,t + D p,t. Questo scatto si denota m[t > m. Seguono alcune definizioni: Definizione 2.6. Una sequenza di scatto (firing sequence) σ in una marcatura m é una lista di transizioni che possono scattare in sequenza. m[σ > m dove σ = [t 1, t 2,..., t n ] se e solo se [m 0, m 1,..., m n ] tale che i (1,..., n) m i 1 [t i > m i Definizione 2.7. Il linguaggio di un sistema S = (N, m 0 ) é l insieme di tutte le sequenze di scatto del sistema. L(N, m 0 ) ={σ σ é una sequenza di scatto di S} Esempio 2.1. Proviamo ora a modellare un sistema molto semplice costituito da un processo. Questo processo dispone di sole due locazioni di memoria ed é composto da due thread che lavorano in parallelo. Il primo thread ha due fasi di esecuzione e per la prima fase ha bisogno di utilizzare una locazione di memoria. Anche il secondo thread ha due fasi di esecuzione, per la prima ha bisogno di due locazioni di memoria e per la seconda ne basta solo una. Infine il processo padre puó terminare solo dopo che i due thread hanno concluso l esecuzione. Una possibile rappresentazione in Reti di Petri di questo piccolo sistema é in figura 2.1. La rete disegnata segue la convenzione di non indicare il peso sugli archi quando é unitario.

13 2.2 Reti e sistemi P/T 13 Tabella 2.1: Descrizione della rete dell esempio 2.1 P = { init, initt1, initt2, fase1t1, fase1t2, fase2t1, fase2t2, finet1, finet2, fine, mem } m 0 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2] D = ε = { t1, t2, t3, t4, t5, t6, t7, t8} D + = Riportiamo anche la descrizione formale della rete nella tabella 2.1. La rete prevede 11 posti e 8 transizioni. I posti init e fine servono a descrivere lo stato del processo, mentre i posti initt1, fase1t1, fase2t1 e finet1 descrivono lo stato del primo thread (situazione simmetrica per il secondo thread). Il posto mem invece descrive lo stato della memoria indicando attraverso la sua marcatura il numero di locazioni libere. Per ora abbiamo definito la struttura della rete, manca solo la marcatura iniziale. Essa prevede: un token nel posto init due token nel posto mem Per comoditá nella tabella 2.1 e in seguito rappresenteremo le marcature come vettori nei quali il valore della marcatura del posto p si trova nella posizione indicata dall indice corrispondente. Quando il posto init é marcato indica che il processo é nello stato iniziale, in questo stato puó scattare solo la transizione t 1 che avvia i due thread. Dopo lo scatto di questa transizione gli unici posti marcati con un token sono initt1 e initt2 mentre mem resta marcato a 2 in quanto non é stato

14 14 Reti di Petri init initt1 T1 initt2 T2 mem _2 T3 fase1t1 fase1t2 T4 T5 fase2t1 fase2t2 T6 T7 endt1 T8 endt2 end Figura 2.1: Rete dell esempio 2.1

15 2.3 Analisi 15 coinvolto dallo scatto della transizione. Da qui possiamo scegliere di far scattare t 2 o t 3, con la prima portiamo avanti il primo thread. Notiamo dopo lo scatto di t 2 il posto mem perde un token. Ora il secondo thread non potrá procedere finché non ci saranno di nuovo due locazioni di memoria libere, quindi fino a quando lo scatto della transizione t 4 non riporterá un token in mem. Infine la transizione t 8 scatterá solo quando i due thread avranno terminato e porterá il sistema in uno stato finale. 2.3 Analisi Definito il formalismo per descrivere un modello ora vedremo quali sono le proprietá che possiamo controllare du si esso. Tra le principali proprietá ricercate nei sistemi concorrenti troviamo la boundness, la vivezza (liveness), l assenza di deadlock (deadlock-freeness), la reversibilitá e la mutua esclusione. La proprietá di boundness garantisce che il numero di stati del modello sia finito. In particolare questa proprietá si verifica quando ogni componente di stato del modello é limitata da un intervallo di valori. Se per ogni evento del sistema, il modello puó sempre ricondursi in uno stato in cui tale evento sia consentito, allora la proprietá di liveness é verificata. Se si richiede solo che per ogni stato del sistema ci sia un evento attivabile, allora si parla di deadlock-freeness. Un sistema reversibile é un sistema che puó sempre tornare nello stato iniziale. La mutua esclusione puó essere legata agli eventi o alle variabili degli stati. Se legata agli eventi richiede che due o piú non siano mai abilitati contemporaneamente. Se legata alle variabili di stato richiede che un sottoinsieme di esse non assuma determinati valori contemporaneamente. Nel capitolo 4 vedremo una logica per esprimere formalmente alcune di queste proprietá. L approccio piú semplice per valutare le proprietá consiste nell effettuare una simulazione attraverso il token game. Alcuni tools grafici per le PN consentono di simulare l evoluzione grafica della rete: l utente sceglie quale transizione (tra le abilitate) far scattare di volta in volta e il tool visualizza la nuova marcatura raggiunta dopo lo scatto. In questo modo le proprietá vengono verificate ad occhio dall utente, ma se esso non ha simulato tutti

16 16 Reti di Petri i possibili comportamenti la valutazione potrebbe non essere corretta. In conclusione il token game é utile per comprendere il comportamento del modello, ma non per valutare con certezza le proprietá. Le tecniche di model checking sviluppate per l analisi di PN si dividono in tre categorie: tecniche enumerative, tecniche strutturali e tecniche di trasformazione. Queste tecniche non sono per forza esclusive, l uso combinato puó essere utile per ridurre la complessitá dell analisi. Le tecniche enumerative valutano le proprietá stato per stato, si basano quindi sulla generazione dello spazio degli stati e della funzione di passaggio di stato. Le tecniche di trasformazione consistono nel trasformare il modello del sistema in un modello piú semplice da analizzare. La trasformazione deve garantire che le proprietá del modello di partenza (o almeno il sottoinsieme desiderato) vengano mantenute. Infine le tecniche di analisi strutturale si basano sulla struttura della rete e utilizzano la marcatura iniziale come parametro. In questa classe troviamo tecniche di algebra lineare basare sulle equazioni di stato e tecniche basate sul grafo della rete. In questa tesi prenderemo in considerazione solo le tecniche enumerative dando particolare attenzione alla generazione dello spazio degli stati Tecniche enumerative Come giá detto, queste tecniche si basano sulla generazione dello spazio degli stati. Lo spazio degli stati di una rete di Petri é detto Reachability Set (RS). Definizione 2.8. Il Reachability Set (o RS) di un sistema PN é l insieme di tutte le marcature raggiungibili attraverso un a sequenza di scatto appartenente ad L(N, m 0 ). RS(N, m 0 ) = {m σ L(N, m 0 ) m 0 [σ > m} L insieme delle marcature raggiungibili é utile per valutare solo alcune delle proprietá che abbiamo visto finora. Per controllare il bound di un posto basta prendere il massimo valore che assume tra tutte le marcature presenti in RS, per valutare se il sistema é reversibile RS non basta. Per questo si é introdotto il concetto di Reacheability Graph. Definizione 2.9. Il Reachability Graph (o RG) di un sistema PN é un grafo orientato i cui nodi sono le marcature del sistema e gli archi rappresentano

17 2.4 Generazione dello spazio degli stati 17 Tabella 2.2: Principali proprietá per le reti di Petri bound di un posto p b(p) = max{m(p) m RS(N, m 0 )} il posto p é bounded b(p) < il sistema é bound p P p é bounded il sistema é deadlock free m RS(N, m 0 ) t ε m[t > la transizione t é viva m RS(N, m 0 ) σ L(N, m 0 ) m[σ > m e m [t > il sistema é vivo t ε t é viva il sistema é reversibile m RS(N, m 0 ) σ L(N, m 0 ) m[σ > m 0 i passaggi da una marcatura ad un altra. RG(N, m 0 ) = (V, E) dove V = RS(N, m 0 ) e E = {(m 1, m 2 ) t ε m 1 [t > m 2 } Esempio 2.2. Nella figura 2.2 c é l esempio di una rete e del rispettivo RG. I tre nodi del grafo sono tutte le possibili marcature della rete, e gli archi rappresentano il passaggio da una marcatura all altra. Le marcature sono espresse indicando i nomi dei posti seguiti dal numero di token tra parentesi. L etichetta su ogni arco indica quale transizione deve scattare perché avvenga il passaggio di stato. 2.4 Generazione dello spazio degli stati L algoritmo tradizionale per ricavare tutti i possibili stati del modello si basa su un idea semplice: generare, partendo dallo stato iniziale, tutti gli stati raggiungibili attraverso lo scatto di una transizione, da questi ultimi generare gli stati successivi e ripetere l operazione fino a quando non si generano piú stati nuovi. Questo é ció che fa l algoritmo 1. L algoritmo fa uso di due strutture dati per memorizzare gli insiemi di stati: S che contiene le marcature visitate e U che contiene le marcature generate ma non ancora espanse. La terminazione avviene quando l insieme U é vuoto, cioé non ci sono piú stati da espandere, a quel punto S coinciderá esattamente con RS(N, m 0 ). Se lo spazio degli stati del modello é infinito l algoritmo non termina. Per i modelli PN, Karp e Miller [6] hanno dimostrato come sia possibile stabilire se il modello é unbounded ponendo una condizione durante la generazione dello spazio degli stati. L ordine in cui le marcature vengono scoperti dipendere dall implementazione della linea 4: se scegliamo la prima marcatura che é stata inserita in

18 18 Reti di Petri T3 P1 T1 T2 P2 P3 T4 P1(1) P2(0) P3(0) T1 T2 T3 P1(0) P2(1) P3(0) P1(0) P2(0) P3(1) T4 Figura 2.2: Esempio di RG di una PN U abbiamo un generazione in ampiezza, se scegliamo l ultima abbiamo una generazione in profonditá. La complessitá dell algoritmo é legata alle strutture dati utilizzate per rappresentare S e U. Queste strutture devono poter memorizzare un gran numero di stati, ognuno dei quali é a sua volta rappresentato dalla marcatura di ogni posto della rete. Le operazioni principali che hanno un grosso impatto sulla complessitá sono: la verifica che la marcatura appena generata non sia giá presente in S (linea 8), l inserimento di un nuovo stato in S e in U (linea 9 e 10) e la rimozione di uno stato da U (linea 4). É necessario quindi avere dei buoni metodi di accesso alla struttura dati e fornire metodi efficienti per la manipolazione. L if della linea 8 viene eseguito esattamente un numero di volte pari al numero di archi del RG ( E ), mentre le istruzioni 9 e 10 vengono eseguite un numero di volte pari al numero di stati ( RS ). Se C 1 é la complessitá della ricerca in S e C 2 é la complessitá di inserimento in U ed S allora la complessitá dell algoritmo é O(C 1 E + C 2 RS ). In letteratura sono state proposte diverse strutture dati per rappresentare e manipolare efficientemente S ed U tra cui alberi binari e tabelle hash.

19 2.5 Tools 19 Algoritmo 1 Generazione di RG: GeneraRG(marcatura m 0, rete N) 1: S m 0 2: U m 0 3: while U do 4: rimuovi m in U 5: determina l insieme T delle transizioni abilitate in m 6: for all t T do 7: determina la marcatura m raggiungibile da m con lo scatto di t 8: if m / S then 9: S S {m } 10: U U {m } 11: end if 12: aggiungi arco (m, m, t) a RG 13: end for 14: end while 15: return S, RG In queste strutture ogni stato é rappresentato da un puntatore alla definizione vera e propria della marcatura, memorizzata attraverso una struttura dati diversa. Con questo approccio la dimensione dello spazio degli stati che si riesce a generare é limitato (circa... ) sia dal tempo che dalla quantitá di memoria disponibile. I risultati migliori sono stati ottenuti attraverso le strutture dati conosciute come Decision Diagram (DD) e gli algoritmi simbolici per la generazione dello spazio degli stati. Nel prossimo capitolo analizzeremo in dettaglio queste strutture e la loro applicazione. 2.5 Tools da fare GreatSPN GreatSPN é una suite di strumenti per il disegno e l analisi, qualitativa e quantitativa, delle GSPNs (Generalized Stochastic Petri Nets) e delle SWNs (Stochastic Well-formed Nets). La prima versione é stata rilasciata dall Universitá di Torino alla fine degli anni 80, da allora é stato ampiamente utilizzato nel campo della ricerca SMART

20 20 Reti di Petri

21 Capitolo 3 Generazione simbolica dello spazio degli stati 3.1 Introduzione In questo capitolo introdurremo le strutture dati e le tecniche simboliche per la rappresentazione e la manipolazione dello spazio degli stati. Abbiamo visto che, nel scegliere una rappresentazione, bisogna trovare il giusto compromesso tra l uso efficiente della memoria e la possibilitá di poter creare e manipolare la struttura in tempi brevi. A tale scopo le ricerche si sono direzionate sulle strutture dati simboliche: i Decision Diagram (DD). La prima parte di questo capitolo é dedicata ad una dettagliata definizione di queste strutture, mentre la seconda parte descrive come esse vengano utilizzate nella verifica delle reti di Petri. 3.2 Decision Diagram Il punto di forza dei Decision Diagram é dovuto alla possibilitá di rappresentare efficacemente l insieme degli stati. Non esiste una rappresentazione disgiunta tra stato e insieme, ció consente di condividere tra gli stati la rappresentazione delle componenti. Nello specifico delle PN, ogni stato é definito dalla marcatura di ogni posto. In una rete con molti posti, se due stati differiscono solo per un posto, attraverso i DD possiamo rappresentare l insieme dei due stati esplicitando la parte in comune una sola volta. Come ció sia possibile verrá compreso meglio in seguito.

22 22 Generazione simbolica dello spazio degli stati Binary Decision Diagram I Binary Decision Diagram (BDD) sono stati inizialmente proposti da Lee [8] e Akers [1] e resi popolari da Bryant [3], che definí meglio la struttura dati e presentó degli algoritmi efficienti per la loro manipolazione. Definizione 3.1. Un Binary Decision Diagram é un grafo diretto aciclico usato per rappresentare funzioni di tipo f : B k B. La funzione rappresentata da un BDD ha la seguente forma f : x 0 x 1... x k {0, 1} dove il dominio di ogni variabile x i é {0, 1}. Il grafo di un BDD ha due tipi di vertici (o nodi): terminali che sono etichettati con il nome di una variabile (x 1, x 2,... x k ) e hanno esattamente due archi in uscita etichettati con 0 e 1 non terminali che sono etichettati con 0 o 1 e non hanno figli. Dato un assegnamento per le variabili, il valore della funzione puó essere determinato facilmente leggendo il rispettivo BDD. Dalla radice si traccia un percorso fino a raggiungere un nodo terminale che contiene il valore della valutazione. Il percorso é determinato dal valore che assume ogni variabile della funzione: ad ogni nodo bisogna scegliere l arco in uscita etichettato con il valore della variabile rappresentata dal nodo stesso. La struttura ad albero dei BDD é ricorsiva, per cui ogni nodo ha come figli altri due BDD. Esempio 3.1. Vediamo come rappresentare attraverso un BDD la funzione f(x 1, x 2, x 3, x 4 ) = (x 1 x 3 ) (x 2 x 4 ). Ricordiamo che i valori booleani vero e falso sono rispettivamente rappresentati da 1 e 0. In figura 3.1 c é la rappresentazione grafica del BDD corrispondente ad f, essa segue una delle convenzioni piú utilizzate: i nodi non terminali hanno una forma tonda, i nodi terminali sono quadrati e gli archi sono tratteggiati se la loro etichetta é 0. Per la tupla (0, 1, 1, 1) la valutazione della funzione é 1, vediamo come questo risultato si puó leggere direttamente dal grafo. Il nodo alla radice rappresenta la prima variabile, il valore assegnato ad essa é 0 per cui seguiamo l arco tratteggiato. Ora siamo scesi di un livello e il nodo incontrato rappresenta la seconda variabile, in questo caso seguiamo l arco non tratteggiato perché il valore assegnato dalla tupla é 1. Per le restanti due variabili

23 3.2 Decision Diagram 23 X1 X2 X2 X3 X3 X3 X3 X4 X4 X4 X4 X4 X4 X4 X Figura 3.1: BDD della funzione dell esempio 3.1 dobbiamo seguire gli archi non tratteggiati e cosí facendo arriviamo al nodo terminale 1 che rappresenta proprio la valutazione della funzione. Come giá detto un BDD codifica funzioni binarie, notiamo che é quindi possibile codificare anche gli insiemi di tuple binarie attraverso la relativa funzione caratteristica. Oltre agli insiemi, con un piccolo accorgimento, é possibile rappresentare funzioni del tipo g : B k 2 Bk definendo una funzione f(x 1, x 2... x k, x 1, x 2... x k ) = { 1 se (x 1, x 2... x k ) g(x 1, x 2... x k ) 0 altrimenti Per rappresentare la funzione f sará necessario utilizzare un BDD con 2k variabili. Con i BDD possiamo quindi rappresentare sia un insieme di stati che la funzione di passaggio da uno stato all altro (Next State Function). Una funzione non ha un unico BDD che la rappresenta, considerando ordini diversi per le variabili si ottengono due BDD completamente differenti. Se l insieme di variabili ha una relazione totale di ordinamento e, per ogni percorso del BDD, la visita dei nodi rispetta questo ordinamento abbiamo un Ordered BDD (OBDD).

24 24 Generazione simbolica dello spazio degli stati Definizione 3.2. Un Ordered BDD é un BDD che rispetta l ordinamento associato alle variabili: ogni nodo non terminale é etichettato con la variabile successiva a quella con cui é etichettato il padre. É piú semplice vedere un OBDD come una strutture a livelli: al livello piú alto troviamo la radice etichettata con x k (dove k é il numero di variabili della funzione e il pedice stabilisce l ordinamento delle variabili), i figli della radice sono al livello k-1 e hanno come etichetta x k 1 e cosí via fino al livello 1. I figli dei nodi a livello 1 sono nodi terminali. Un nodo di un BDD puó essere: ridondante se i due archi uscenti portano allo stesso nodo duplicato se esiste un altro nodo con la stessa etichetta e se non terminale anche con la stessa coppia di figli Partendo da un OBDD ed eliminando i nodi ridondanti e duplicati otteniamo un OBDD ridotto: Reduced OBDD (ROBDD). Definizione 3.3. Un Reduced OBDD é un OBDD senza nodi ridondanti e duplicati. Se si eliminano tutti i nodi ridondanti da un BDD puó accadere che alcuni percorsi, che vanno dalla radice ad un nodo terminale, non visitano un nodo per ogni livello. I livelli saltati rappresentano variabili che hanno valore ininfluente. Si puó scegliere di mantenere i nodi ridondanti necessari ad evitare salti e costruire un Quasi-ROBDD (QROBDD). Nella figura 3.2 possiamo vedere le differenza tra l ROBDD e il QRBDD della funzione dell esempio 3.1. Data una funzione binaria e fissato un ordinamento delle variabili, ROBDD e il QROBDD sono due forme canoniche [3]. Quindi ogni funzione ha una corrispondenza uno a uno con un ROBDD (o QROBDD). Risulta molto semplice stabilire se due ROBDD rappresentano la stessa funzione. La dimensione dell insieme di tuple rappresentato da un BDD non é direttamente relativa al numero di nodi del grafo. Se devo rappresentare una decina di tuple che differiscono solo per un elemento servono meno nodi che per rappresentare lo stesso numero di tuple che non condividono nessun elemento. Anche la scelta di un determinato ordinamento delle variabili puó incidere sulla dimensione (in numero di nodi) della struttura [2]. Ma,

25 3.2 Decision Diagram 25 Figura 3.2: QROBDD (a) e ROBDD (b) della funzione dell esempio 3.1 siccome la ricerca dell ordinamento ideale per le variabili é un problema NPcompleto si fa affidamento a delle euristiche per la scelta dell ordine delle variabili [9]. Operazioni Come accennato, uno dei vantaggi dei BDD é dato dalla possibilitá di maneggiarli in maniera efficiente attraverso algoritmi sviluppati negli anni [3, 4, 7]. Le principali operazioni logiche che si possono effettuare tra due BDD (considerandoli come rappresentazione di due insiemi) sono: unione intersezione differenza verifica di equivalenza verifica di appartenenza di una tupla operazione di post-image, che dato un BDD a k variabili e un secondo a 2k variabili che codifica una relazione, restituisce un BDD (a k variabili) che codifica l insieme delle tuple relazionate a quelle del primo BDD.

26 26 Generazione simbolica dello spazio degli stati L operazione di unione é descritta dall algoritmo 2. La notazione p[0] indica il figlio del nodo p per l arco etichettato con 0, e la notazione p.livel indica il livello al quale si trova il nodo p. L algoritmo é ricorsivo, termina quando uno dei due BDD p e q é un nodo terminale o quando sono identici. L unione tra un nodo terminale e un BDD dipende dal valore terminale: se il valore é 1 il risultato dell unione é 1, se vale 0 il risultato dell unione é il BDD stesso. Piú complesso é determinare l unione di due BDD, dobbiamo distinguere due casi in funzione dell altezza delle radici: se i due nodi sono alla stessa altezza, l unione é un BDD radicato in un nodo che ha come figli l unione dei figli per 0 e l unione dei figli per 1 dei due BDD di partenza (linea 14) se uno dei due nodi é ad un livello piú alto, l unione é un BDD radicato in un nodo che ha come figli l unione del BDD a livello piú basso e un figlio dell altro (linee 16 e 18) Per assicurare la canonicitá del BDD generato tutti gli algoritmi che ci operano fanno uso di una Unique Table. La UniqueTable é implementata come una tabella hash e tiene traccia di tutti i nodi generati. Per identificare univocamente un nodo, e quindi come chiave di ricerca, si usano tre campi: il livello a cui si trova e il riferimento ai due figli. Attraverso questa tabella stabilire l uguaglianza tra due nodi coincide con il confrontare i riferimenti. Se i due nodi da confrontare appartengono a BDD differenti é necessario che i BDD facciano uso della stessa UniqueTable. Per migliorare l efficienza delle operazioni é comune l utilizzo di una Cache implementata anche essa con una tabella hash. La Cache serve a salvare i risultati delle operazioni giá eseguite attraverso il codice dell operazione, il riferimento ai due operandi e al risultato. Ogni volta che é necessario eseguire un operazione, prima si controlla se non sia giá presente nella Cache (linea 10). L operazione di intersezione tra due BDD, é molto simile a quella di unione, basta invertire le condizioni dei due if iniziali dell algoritmo 2 (linea 1 e linea 4). La complessitá degli algoritmi di unione e intersezione tra due BDD é legata alla cardinalitá di questi ultimi intesa come numero di nodi: O( p q ).

27 3.2 Decision Diagram 27 Algoritmo 2 Unione: Union(BDD p, BDD q) 1: if p = 0 q = 1 then 2: return q 3: end if 4: if p = 1 q = 0 then 5: return p 6: end if 7: if p = q then 8: return p 9: end if 10: if Cache contiene una entry UnionCODE, p, q : r then 11: return r 12: end if 13: if p.livel = q.livel then 14: r U niquet ableinsert(p.livel, U nion(p[0], q[0]), U nion(p[1], q[1])) 15: else if p.livel > q.livel then 16: r U niquet ableinsert(p.livel, U nion(p[0], q), U nion(p[1], q)) 17: else 18: r U niquet ableinsert(p.livel, U nion(p, q[0]), U nion(p, q[1])) 19: end if 20: inserire UnionCODE, p, q : r in Cache 21: return r

28 28 Generazione simbolica dello spazio degli stati L operazione di post-image si applica tra un BDD a k variabili e un BDD a 2k variabili. Semanticamente questa operazione permette di calcolare tutti i valori della funzione rappresentata dal BDD a 2k variabili su un insieme di tuple codificate nel BDD a k variabili. Se la funzione é una next-statefunction allora, dato un insieme di stati, ci restituisce l insieme di stati raggiunti in un passo da quelli dati. L algoritmo 3 mostra l implementazione dell operazione. Opposta all operazione di post-image c é quella di pre-image, che consiste nell eseguire l operazione di post-image sull inversa della funzione data. In questo modo, se la funzione é una next-state-function, dato un insieme di stati, ci restituisce l insieme di stati predecessori. Algoritmo 3 Post-image: RelationaProduct(BDD p, BDD2 r) 1: if p = 0 r = 0 then 2: return 0 3: end if 4: if p = 1 q = 1 then 5: return 1 6: end if 7: if p = q then 8: return p 9: end if 10: if Cache contiene una entry RelationaP roductcode, p, r : q then 11: return q 12: end if 13: q 0 Union(RelationaP roduct(p[0], r[0][0]), RelationaP roduct(p[1], r[1][0])) 14: q 1 Union(RelationaP roduct(p[0], r[0][1]), RelationaP roduct(p[1], r[1][1])) 15: q UniqueT ableinsert(p.livel, q 0, q 1 ) 16: inserire RelationaP roductcode, p, r : q in Cache 17: return q Esempio 3.2. Partendo dalla rete di Petri in figura 3.3 abbiamo costruito i due BDD che rappresentano i passaggi di stato apportati dalle due transizioni t 1 e t 2 (vedi figura 3.4). La prima transizione trasforma la marcatura di P 1 da 1 a 0, quella di P 2 da 0 a 1 e lascia invariata la marcatura di P 3. Nel BDD relativo, questi passaggi si osservano seguendo gli archi: il valore della variabile P 1 puó essere solo 1 e quello della variabile P 1, che rappresenta la marcatura del posto dopo il passaggio di stato, vale 0.

29 3.2 Decision Diagram 29 P1 T1 P2 T2 P3 Figura 3.3: Rete dell esempio 3.2 Applicando l algoritmo di unione ai due BDD che rappresentano tutte le transizioni della rete otteniamo il BDD della Next State Function (NSF). Nella figura 3.5 c é un esempio dell operazione di post-image tra la marcatura iniziale della rete e la sua NSF. La marcatura iniziale é data da un token in P 1 e zero negli altri posti, quando si applica ad essa la NSF si ottengono tutte e due le restanti marcature raggiungibili del sistema: m 1 = (0, 1, 0) e m 2 = (0, 0, 1). Nell esempio 3.2 abbiamo visto come sia possibile rappresentare e manipolare lo spazio degli stati di una PN safe. Le reti safe sono un sottoinsieme delle PN: Definizione 3.4. Una rete di Petri é safe se la marcatura di ogni posto é al piú 1. m RS(N, m 0 ) p P m(p) 1 La marcatura di ogni stato di una rete safe viene rappresentata da una variabile del BDD. Per poter rappresentare anche le PN non safe abbiamo bisogno che il dominio delle variabili del DD sia definito sull insieme dei naturali Multi-Way Decision Diagram I Multi-Way decision diagrams sono un estensione dei BDD.

30 30 Generazione simbolica dello spazio degli stati T1 T2 NSF P1 P1 P1 P1 P1 P1 P2 P2 P2 P2 U P2 = P2 P3 P3 P3 P3 P3 P3 P3 P Figura 3.4: Esempio di unione tra i due BDD che rappresentano i passaggi di stato delle transizioni della PN in figura 3.3. Gli archi non riportati finisco in 0. M0 P1 NSF P1 M1 and M2 P1 P1 P2 P2 P2 O = P2 P3 P3 P3 P3 P3 P3 P Figura 3.5: Esempio di post-image tra i due BDD che rappresentano la marcatura iniziale e la next state function della PN in figura 3.3. Gli archi non riportati finisco in 0.

31 3.2 Decision Diagram 31 Definizione 3.5. Un Multi-Way decision diagram é un grafo diretto e aciclico usato per rappresentare funzioni di tipo f : N 0 N 1... N k B dove il dominio di ogni variabile N i é un insieme finito di valori {0... n k 1}. Rispetto alla struttura descritta prima, gli MDD permettono di avere variabili con un dominio finito ma non limitato ai due valori 0 e 1. Come i BDD, gli MDD sono composti da nodi terminali e non terminali. I nodi terminali sono esattamente con per i BDD, mentre i nodi non terminali, etichettati con il nome di una variabile, hanno un figlio per ogni valore che la variabile puó assumere. Le nozioni di ordinamento viste per i BDD possono essere applicate anche agli MDD per ottenere gli Ordered MDD (OMDD). Cambia leggermente il concetto di nodi ridondanti e nodi duplicati: un nodo é ridondante se tutti i suo figli sono identici due nodi sono duplicati se hanno la stessa etichetta e se per gli stessi valori hanno gli stessi figlia Basandoci su queste definizioni possiamo estendere la nozione di ridotto e quasi ridotto anche ai MDD. Anche per gli ROMDD e per gli QROMDD, fissato l ordinamento delle variabili, c é una rappresentazione canonica [5] per ogni funzione. Esempio 3.3. In figura 3.6 c é la rappresentazione del MDD che codifica il seguente insieme di tuple: (0, 2, 1, 0) (1, 0, 0, 0) (1, 0, 1, 0) (1, 1, 0, 0) (1, 1, 1, 0) (1, 2, 1, 0) (2, 0, 0, 0) (2, 0, 1, 0) (2, 1, 0, 0) (2, 1, 1, 0) (2, 2, 1, 0) (3, 0, 1, 0) S =. (3, 1, 1, 0) (3, 2, 0, 0) (3, 2, 0, 1) (3, 2, 0, 2) (3, 2, 1, 0) (3, 2, 1, 1) (3, 2, 1, 2) Le variabili utilizzate per la rappresentazione con i rispettivi domini sono: x 1 : {0, 1, 2, 3} x 2 : {0, 1, 2} x 3 : {0, 1} x 4 : {0, 1, 2}

32 32 Generazione simbolica dello spazio degli stati X X X X4 0 1 Figura 3.6: Esempio di MDD Operazioni Le operazioni definite sugli MDD sono esattamente le stesse elencate per i BDD. La semantica delle operazioni non cambia, differiscono gli algoritmi che riportiamo di seguito per completezza. L algoritmo 4 effettua ricorsivamente l unione tra due MDD. I casi di terminazione sono gli stessi visti per l algoritmo 2, mentre l unione di due nodi ad uno stesso livello avviene nelle righe 13, 14 e 16. Il ciclo in riga 13 genera tutti i figli del MDD risultate: uno per ogni valore che la variabile a livello k puó assumere. Ogni figlio é esattamente l unione dei due i-esimi figli di p e q. L operazione di post-image, come per i BDD, si applica tra un MDD a k variabili e un MDD a 2k variabili. L algoritmo 5 mostra l implementazione dell operazione. 3.3 Generazione RS con DD Le strutture dati appena introdotte hanno trovato un largo impiego nella verifica delle reti di Petri, consentendo un ottima rappresentazione dell insieme degli stati e della funzione di passaggio di stato. Nell approccio esplicito ogni stato viene memorizzato in una apposita locazione di memoria e gli algoritmi che ci lavorano prendono in considerazione uno stato alla volta. In questo modo, sia la memoria utilizzata che il tempo necessario per manipolarli crescono linearmente rispetto al numero degli stati del modello. Il numero degli stati, peró, cresce molto velocemente

33 3.3 Generazione RS con DD 33 Algoritmo 4 Unione: Union(level k, MDD p, MDD q) 1: if p = 0 then 2: return q 3: end if 4: if q = 0 then 5: return p 6: end if 7: if p = q then 8: return p 9: end if 10: if Cache contiene una entry UnionCODE, p, q : r then 11: return r 12: end if 13: for all i k N k do 14: r ik Union(k 1, p[i k ], q[i k ]) 15: end for 16: r UniqueT ableinsert(k, r 0,..., r Nk 1) 17: inserire UnionCODE, p, q : r in Cache 18: return r Algoritmo 5 Post-image: RelationaProduct(level k, MDD p, MDD2 r) 1: if k = 0 then 2: return p r 3: end if 4: if Cache contiene una entry RelationaP roductcode, p, r : q then 5: return q 6: end if 7: for all j k N k do 8: q jk 0 9: for all i k r[i k ][j k ] 0 do 10: q jk Union(q jk, RelationaP roduct(k 1, p[i k ], r[i k ][j k ])) 11: end for 12: end for 13: r UniqueT ableinsert(k, q 0,..., q Nk 1) 14: inserire RelationaP roductcode, p, r : q in Cache 15: return q

34 34 Generazione simbolica dello spazio degli stati all aumentare della dimensione della struttura della rete o della marcatura iniziale dei posti. Le strutture dati simboliche, invece, possono salvare le informazioni di piú stati in una stessa locazione di memoria grazie alla condivisione delle componenti tra stati. Solo nel caso peggiore, quando tra gli stati non ci sono componenti comuni, l uso della memoria é pari a quello delle tecniche esplicite. Anche la manipolazione degli stati é resa piú efficiente grazie alle operazioni definite sulle strutture simboliche che operano sull intero insieme degli stati. L algoritmo 6 mostra come, da l MDD N che codifica la next state function, sia possibile generare tutto l insieme degli stati raggiungibili. Algoritmo 6 Generazione RS: RelationaProduct(BDD p, BDD2 r) 1: if p = 0 r = 0 then 2: return 0 3: end if 4: if p = 1 q = 1 then 5: return 1 6: end if 7: if p = q then 8: return p 9: end if 10: if Cache contiene una entry RelationaP roductcode, p, r : q then 11: return q 12: end if 13: q 0 Union(RelationaP roduct(p[0], r[0][0]), RelationaP roduct(p[1], r[1][0])) 14: q 1 Union(RelationaP roduct(p[0], r[0][1]), RelationaP roduct(p[1], r[1][1])) 15: q UniqueT ableinsert(p.livel, q 0, q 1 ) 16: inserire RelationaP roductcode, p, r : q in Cache 17: return q La rappresentazione condivisa degli stati fa sí che la dimensione delle strutture simboliche non cresca linearmente. Nella rappresentazione esplicita, l aggiunta di uno nuovo stato fa aumentare la quantitá di memoria necessaria alla rappresentazione dell intero insieme, mentre con gli MDD ( o BDD) un nuovo stato puó aumentare il grado di condivisione e di conseguenza ridurre la quantitá di memoria utilizzata. Per questo, quando si manipolano queste strutture simboliche, la memoria occupata alla fine é

35 3.4 Strutture simboliche nei tools 35 spesso inferiore al picco raggiunto durante l esecuzione di operazioni. All uso pratico di queste strutture dati si aggiunge un problema: il bound dei posti dovrebbe essere conosciuto a priori. Ci sono due strade possibili, si puó calcolare attraverso tecniche di analisi strutturale il bound di ogni posto, o ampliare dinamicamente la struttura se durante la costruzione si eccede rispetto al bound ipotizzato inizialmente. 3.4 Strutture simboliche nei tools

36 36 Generazione simbolica dello spazio degli stati

37 Capitolo 4 CTL 4.1 Introduzione L obiettivo della verifica é quello di accertare che un sistema goda di determinate proprietá. Finora abbiamo visto come modellare il sistema attraverso il formalismo delle reti di Petri, ora vedremo come esprimere le proprietá e come controllarle. Le prime logiche introdotte per la specifica e la verifica di sistemi reattivi furono logiche lineari. La semantica di queste proprietá é definita su di un modello che evolve linearmente: da ogni stato si puó passare esattamente a un solo stato successore. Se etichettiamo alcuni stati come critici o safe, con le logiche lineari, possiamo chiederci se da un determinato stato si possa raggiungere uno critico, o se in futuro si attrverseranno solo stati safe. Le logiche opposte a quelle lineari sono le logiche branching. Queste logiche sono formalmente basate su modelli che ad ogni momento possono avere diversi futuri: ogni stato del modello puó avere piú di uno stato successore. Tornando all esempio in cui vi sono alcuni stati critici e altri safe, possiamo esprimere con queste logiche proprietá quali: da questo stato non esistono futuri in cui raggiungeró uno stato critico. Computation Tree Logic (CTL) é una logica branching introdotta da Clarke ed Emerson nel cerca riferimento

38 38 CTL 4.2 Sintassi L espressioni piú elementari di CTL sono le proposizioni atomiche. Una proposizione atomica é una determinata proprietá che puó essere valida o no in un determinato stato. Nel descrivere la logica astrarremo dalle preposizioni atomiche considerandole solo come etichette: ad ogni stato del modello si associa l insieme di preposizioni valide in esso. Definizione 4.1. Data p AP, l insieme delle formule CTL é definito da: φ ::= p φ φ φ EX φ E [φ U φ] A [φ U φ] Nella definizione precedente ci sono degli operatori temporali e logici, ma non sono tutti quelli disponibili in CTL, da questi si possono derivare tutti gli altri. I quattro operatori temporali sono: E (exist) ed A (always), gli operatori branching. Essi richiedono che la proprietá espressa dalla formula che li segue sia valida per tutti i futuri (A) o almeno per uno (E). In una formula CTL devono sempre essere combinati con gli operatori lineari. U (until) e X (next), gli operatori lineari. Il primo é un operatore binario e richiede che una proprietá sia valida finché non diventa valida la seconda. X richiede che la formula successiva sia valida nello stato successore a quello di riferimento. Nel modello CTL ogni stato puó avere piú successori, per questo é necessario indicare se la proprietá ricercata deve essere valida per almeno uno o per tutti, ció si esprime anteponendo un operatore branching. Gli operatori logici derivati sono quelli della logica classica: congiunzione ed implicazione. Mentre gli operatori temporali derivati sono: exist in the future: EF φ E [true U φ] always in the future: AF φ A [true U φ] exist globally: EG φ AF φ always globally: AG φ EF φ always next: AX φ EX φ

39 4.3 Semantica Semantica L interpretazione della logica CTL é definita in termini di un modello di Kripke. Definizione 4.2. Un modello CTL é una tripla M = (S, R,Label) dove: S é l insieme non vuoto degli stati R S S é una relazione su S, che associa ad ogni s S agli stati successori Label : S 2 AP é la funzione di etichettatura che associa ad ogni stato un sottoinsieme di proposizione atomiche. Prima di presentare la semantica, introduciamo alcuni concetti ausiliari. Definizione 4.3. Un percorso (path), dato un modello M, é una sequenza infinita di stati (s 0, s 1, s 2...) tale che i 0 (s i, s i+1 ) R. Dato il percorso σ, per ogni i 0, useremo la notazione σ[i] per denotare l i-esimo stato del percorso. L insieme di tutti i percorsi del modello é denotato con S ω. Definizione 4.4. Dato il modello M, l insieme di percorsi che partono da uno stato s S é definito come segue: P M (s) = {σ S ω σ[0] = s} La semantica CTL é definita attraverso una relazione di soddisfacibilitá ( denotato con =) tra uno stato del modello e una formula. Abbiamo (M, s) = σ se e solo se σ é valida nello stato s del modello M. Definizione 4.5. Date la proposizione atomica p AP, il modello M = (S, R, Label), lo stato s S e due formule CTL φ e ψ, la relazione = é definita: s = p sse p Label(s) s = φ sse (s = φ) s = φ ψ sse (s = φ) (s = ψ) s = EX φ sse σ P M (s) tale che σ[1] = φ s = E [φ U ψ] sse σ P M (s) tale che ( j 0 σ[j] = ψ ( 0 k j σ[k] = φ)) s = A [φ U ψ] sse σ P M (s) tale che ( j 0 σ[j] = ψ ( 0 k j σ[k] = φ))

40 40 CTL Detto piú informalmente, la formula EX φ é valida in uno stato s se e solo se esiste un cammino σ che parte da s per il quale il primo stato soddisfa φ. La formula A [φ U ψ], invece, é valida in uno stato s se e solo se ogni cammino che parte da s ha un prefisso iniziale di stati che soddisfano φ seguito da uno stato che soddisfa ψ. Molto simile é il significato della formula E [φ U ψ], che si differenzia solo in quanto l until deve essere valido per ogni percorso che parte dallo stato s. L interpretazione degli operatori derivati si ricava dalle definizioni appena date: s = AX φ sse σ P M (s) σ[1] = φ) s = EG φ sse σ P M (s) tale che ( j 0 σ[j] = φ) s = EF φ sse σ P M (s) tale che ( j 0 σ[j] = φ) s = AG φ sse σ P M (s) ( j 0 σ[j] = φ) s = AF φ sse σ P M (s) tale che ( j 0 σ[j] = φ) La formula EG φ é valida in uno stato s se e solo se esiste un percorso (che parte da esso) tale che per ogni stato la proprietá φ é mantenuta. La formula EF φ, invece, é valida in uno stato s se e solo se esiste un percorso che parte da s e che contenga almeno uno stato che soddisfi φ. Le formule AG φ e AF φ sono simili alle precedenti, ma quantificate universalmente. Esempio 4.1. Prendiamo il modello M disegnato in figura 4.1(a) e proviamo a valutare la validitá di alcune formule per tutti gli stati. Il modello é rappresentato attraverso un grafo orientato, gli archi rappresentano il passaggio di stato e l insieme associato ad ogni stato indica le proposizioni atomiche, p e q, che valgono per quel determinato stato. EX p é valida per tutti gli stati in quanto hanno tutti un successore diretto in cui vale p. AX p é valida per tutti gli stati tranne che per lo stato s 0 in quanto ha tra i successori lo stato s 2 in cui non vale p. Per tutti gli stati, eccetto lo stato s 2, é possibile avere un cammino per il quale p é globalmente valida. In questi stati vale quindi la formula EG p.

41 4.3 Semantica 41 Figura 4.1: Interpretazione di alcune formule CTL. Gli stati colorati sono quelli che soddisfano la formula riportata accanto.

42 42 CTL AG p é valida solo per s 3 perché l unico percorso che parte da esso visita solo stati in cui vale p. Per tutti gli altri stati é sempre possibili attraversare lo stato s 2 che non soddisfa p. EF EG p é valida per tutti gli stati, in quanto da ogni stato é possibile raggiungere almeno uno stato per cui é valida la sottoformula EG p. A[p EF U q] non é valida in solo s 3 in quanto da esso non si raggiungerá mai uno stato in cui é valida q. 4.4 Model Checker Il problema di model checking per CTL é di controllare se per lo stato s di un modello dato e per una data formula vale la relazione M, s = φ. Supponiamo di voler determinare l insieme di stati di un modello finito per cui é valida una formula CTL φ. Il concetto base che sta dietro agli algoritmi di model checking CTL consiste nell etichettare ogni stato in S con le sottoformule di φ che soddisfa. L insieme di sottoformule di φ é denotato con Sub(φ) ed é definito induttivamente, vedi definizione Definizione 4.6. Date p AP e le formule CTL φ e ψ, allora: Sub(p) = p Sub( φ) = Sub(φ) { φ} Sub(φ ψ) = Sub(φ) Sub(ψ) {φ ψ} Sub( EX φ) = Sub(φ) { EX φ} Sub( E [φ U ψ]) = Sub(φ) Sub(ψ) { E [φ U ψ]} Sub( A [φ U ψ]) = Sub(φ) Sub(ψ) { A [φ U ψ]} La procedura di etichettatura avviene iterativamente: si inizia ad etichettare prima tutti gli stati con le formule di lunghezza 1, cioé le proposizioni atomiche (spesso definite nel modello), e si prosegue con quelle di lunghezza 2 fino ad arrivare alla formula di partenza. All i-esima iterazione l algoritmo etichetta gli stati con le formule di lunghezza i. Le etichette assegnate agli stati in un iterazione servono per determinare l assegnamento delle successive. Se l algoritmo si trova ad dover etichettare gli stati con φ = φ 1 φ 2 deve semplicemente aggiungere questa formula a quelli etichettati con φ 1 e φ 2. Gli stati che soddisfano le due sottoformule φ 1 e φ 2 saranno sicuramente giá stati trovati nelle iterazioni precedenti, in quanto le sottoformule hanno lunghezza inferiore rispetto a φ.

43 4.4 Model Checker 43 Definita questa procedura il problema di model checking CTL puó essere risolto considerando le etichette di ogni stato: M, s = φ sse s é etichettato con φ. L algoritmo 7 mostra come ricorsivamente si possa ricavare l insieme degli stati che soddisfano una formula cacolando l insieme Sat(φ) = {s S M, s = φ} per ogni sottoformula. La computazione di Sat(φ) é fatta considerando la struttura sintattica di φ. Per φ = true il programma restituisce l intero insieme degli stati di M, al contrario per φ = false ritorna un insieme vuoto. Per le proposizioni atomiche le informazioni necessario vengono date dalla funzione di etichettatura: Sat(p) é esattamente l insieme di stati etichettati con p. Per la negazione (linea 7) l algoritmo genera il complemento della formula e lo sottrae all insieme degli stati. La disgiunzione tra due formule diventa l unione tra i due insiemi di stati che le soddisfano (linea 9). Infine per le formule E [φ 1 U φ 2 ] e A [φ 1 U φ 2 ] vengono richiamate le funzioni specifiche Sat EU e Sat AU. Queste funzioni sono spesso implementate da algoritmi piú complessi che si basano sulle seguenti equivalenze: E [φ 1 U φ 2 ] = φ 1 (φ 2 EX (E [φ 1 U φ 2 ])) A [φ 1 U φ 2 ] = φ 1 (φ 2 AX (A [φ 1 U φ 2 ])) Model Checker tradizionale Per avere tutto l insieme di operazioni CTL non é necessario implementare tutti gli operatori temporali. Una possibile scelta é quella di implementare solo EG, EU ed EX e derivare gli altri con le seguenti equivalenze: AX p = EX p EF p = E [true U p] AG p = EF p AF p = EG p A [p U q] = ( E [ q U ( q p)]) EG q Per avere un diretto confronto tra gli algoritmi espliciti e simbolici, riportiamo in questa sezione, i tre che implementano gli operatori base scelti. L algoritmo 8 etichetta tutti gli stati che soddisfano la formula EX p.

44 44 CTL Algoritmo 7 Algoritmo di model checking CTL: Sat(φ) 1: if φ = true then 2: return S 3: else if φ = false then 4: return 5: else if φ AP then 6: return {s φ Label(s)} 7: else if φ = φ 1 then 8: return S Sat(φ) 9: else if φ = φ 1 φ 2 then 10: return Sat(φ 1 ) Sat(φ 2 ) 11: else if φ = EX φ then 12: return {s S (s, s ) R s Sat(φ)} 13: else if φ = E [φ 1 U φ 2 ] then 14: return Sat EU (φ 1, φ 2 ) 15: else if φ = A [φ 1 U φ 2 ] then 16: return Sat AU (φ 1, φ 2 ) 17: end if 18: return q Algoritmo 8 Algoritmo di model checking CTL: LabelEX(p) 1: Y = {i S : p Label(i)} 2: while Y do 3: scegliere e rimuovere uno stato j Y 4: for all i S : (i, j) R do 5: Label(i) = Label(i) EX p 6: end for 7: end while

45 4.4 Model Checker 45 Assumendo che l etichetta p sia giá stata assegnata agli stati appropriati, l algoritmo etichetta con la nuova formula tutti i predecessori di questi stati. L algoritmo 9 etichetta tutti gli stati che soddisfano la formula E [p U q]. Anche in questo caso si assume che gli stati che soddisfano p e q siano giá stati etichettati correttamente. Tutti gli stati etichettati con q fanno parte della soluzione cercata e quindi vanno etichettati anche con la nuova formula. Fatto ció l algoritmo cicla sull insieme di stati appena etichettati: per ogni stato si analizzano tutti i predecessori e si etichettano con la nuova formula se non sono ancora stati etichettati e se vale p. Il ciclo termina quando non ci sono piú nuovi stati da controllare. Algoritmo 9 Algoritmo di model checking CTL: LabelEU(p, q) 1: Y = {i S : q Label(i)} 2: for all i Y do 3: Label(i) = Label(i) E [p U q] 4: end for 5: while Y do 6: scegliere e rimuovere uno stato j Y 7: for all i S : (i, j) R do 8: if (E [p U q] / Label(i)) (p Label(i)) then 9: Label(i) = Label(i) E [p U q] 10: Y = Y {i} 11: end if 12: end for 13: end while L algoritmo 10 etichetta tutti gli stati che soddisfano la formula EG p. Prima di analizzare l algoritmo, notiamo che la descrizione del modello CTL puó essere interpretata come un grafo che ha come nodi l insieme degli stati S e come archi la relazione R. Se nel grafo c é una componente fortemente connessa composta solo da stati etichettati con una determinata formula φ allora per ogni stato della componente vale la formula EG φ. Su questo concetto si basa l algoritmo che come prima cosa calcola le componenti fortemente connesse del sottografo G del modello indotto dall insieme di tutti gli stati etichettati con p. Il grafo preso in considerazione risulta essere G = {S, R } dove S = {i S p Label(i)} ed R = {(u, z) u, z S (u, z) R}. Dopo aver etichettato i primi stati, iterativamente vengono analizzati tutti i predecessori come nell algoritmo precedente.

46 46 CTL Algoritmo 10 Algoritmo di model checking CTL: LabelEG(p) 1: Y = {i S : p Label(i)} 2: costruire l insieme di componenti fortemente connesse C del sottografo R indotto da Y 3: W = {i S : i é uno stato in una componente fortemente connessa di C} 4: for all i W do 5: Label(i) = Label(i) Eg p 6: end for 7: while W do 8: scegliere e rimuovere uno stato j W 9: for all i S : (i, j) R do 10: if (EG p] / Label(i)) (p Label(i)) then 11: Label(i) = Label(i) EG p 12: W = W {i} 13: end if 14: end for 15: end while Model Checker simbolico riferimenti al lavoro di Ciardo In questa sezione vedremo come si possono riscrivere gli algoritmi appena introdotti per adattarli alle strutture simboliche e alle loro operazioni. Come visto nella sezione 3.2, possiamo usare i DD per rappresentare sia gli insiemi di stati che la funzione di passaggio. Questa funzione nei modelli CTL é data dalla relazione R. Tutti gli algoritmi prendono in input l insieme degli stati che soddisfano le sottoformule codificato in un DD e restituiscono il DD dell insieme di stati che soddisfa l intera formula. L algoritmo per calcolare EX p richiama la funzione RelationP roduct (algoritmo 5) sull insieme di posti P e sull inversa della funzione di passaggio di stato. Così facendo si ottiene, attraverso una sola operazione, l insieme degli stati predecessori di tutti gli quelli contenuti in P. Questa operazione é chiamata anche pre-image. Algoritmo 11 Algoritmo di model checking CTL simbolico: BuildEX(P ) 1: return RelationalP roduct(p, R 1 ) Anche in simbolico, per determinare l insieme degli stati che verificano la formula E [p U q], si parte dall insieme degli stati che soddisfano q e

47 4.4 Model Checker 47 di conseguenza tutta la formula. Da questo insieme si ricavano, ad ogni iterazione, gli stati predecessori come descritto nell algoritmo precedente. Ora, per filtrare i predecessori si interseca il loro insieme con quello degli stati che soddisfano p ottenendo solo i predecessori che verificano l intera formula. Gli ultimi stati ottenuti si aggiungono, attraverso l operazione di unione, a quelli di partenza. Queste operazioni si ripetono fino a quando non si trovano piú nuovi stati da aggiungere. L algoritmo 12 implementa esattamente queste operazioni. Algoritmo 12 Algoritmo di model checking CTL simbolico: BuildEU(P, Q) 1: Y = Q 2: repeat 3: O = Y 4: W = RelationalP roduct(y, R 1 ) 5: Z = Intersaction(W, P ) 6: Y = Union(Z, Y ) 7: until O = Y 8: return Y Infine l algoritmo 13 genera l insieme di stati che soddisfano EG p. Nell implementazione esplicita di quest operazione é necessario calcolare le componenti fortemente connesse. In simbolico, invece, si parte dall insieme iniziale che contiene gli stati che soddisfano p e si calcolano i predecessori. Così facendo otteniamo l insieme degli stati che precedono quelli in cui val EG p. Da questo insieme otteniamo, attraverso l intersezione, solo gli stati in cui continua a valere EG p. Algoritmo 13 Algoritmo di model checking CTL simbolico: BuildEG(P ) 1: Y = P 2: repeat 3: O = Y 4: W = RelationalP roduct(y, R 1 ) 5: Y = Intersaction(W, Y ) 6: until O = Y 7: return Y

48 48 CTL

49 Capitolo 5 Model checker CTL e Reti di Petri In questo capitolo vedremo come CTL possa essere utilizzato per esprimere delle proprietáâ sulle reti di Petri e come sia stato costruito il model checker che le valuta. Nel capitolo 2 abbiamo definito lo spazio degli stati di un sistema PN attraverso il grafo RG, mentre nel capitolo 4 abbiamo descritto il modello astratto su cui viene definita la semantica della logica, ora proviamo a definire una relazione tra i due. Il modello CTL specifico delle reti di Petri definisce l insieme S degli stati con l insieme RS delle marcature raggiungibili e la relazione R con la funzione next-state-function (N SF ). Per le proposizioni atomiche, invece, non c é una vera e propria funzione di etichettatura, esse vengono espresse in modo tale da poter essere valutate stato per stato. 5.1 Proposizioni atomiche per PN La definizione dell insieme delle proposizioni atomiche di una logica determina le tipologie di proprietáâ che si possono esprimere. Nel capitolo 2 abbiamo elencato le principali proprietáâ che si possono ricercare in un sistema PN. Esse sono tutte espresse attraverso condizioni sulla marcatura dei posti. Per questo, le proposizioni atomiche per le PN vengono spesso definite attraverso uguaglianze e disuguaglianze di espressioni numeriche che hanno come variabili il numero di token nei posti. Uno stato soddisfa una propo-

50 50 Model checker CTL e Reti di Petri sizione atomica se le marcature di tutti i posti soddisfano la disuguaglianza (o uguaglianza). Esempio 5.1. Ad esempio, se fanno parte della rete i posti P 1 e P 2, si possono costruire le seguenti proposizioni atomiche: P 1 + P 2 4 3P 1 < 8 (3 + 4)P 1 P 2 > (2 + 1) P 1 + 4P 2 = 5 Dove il nome di un posto P abbrevia la notazione m(p ). La semantica di queste espressioni é strettamente legata a quella del modello: se i token nei due posti rappresentano il numero di persone in attesa a due sportelli, la prima espressione richiede che in totale non ci siano piú di quattro persone in coda. É interessante notare che, per come é definita la sintassi globale di CTL, queste espressioni possono essere combinate attraverso i classici operatori logici per ottenere espressioni piú complesse, come P 1 = 0 P 2 = 1. Un altra tipologia di proposizioni atomiche che é utile poter definire sulle reti di Petri é quella per controllare l abilitazione delle transizioni. Nel model checker realizzato, questa condizione si denota con en(t), dove t é una transizione, ed é soddisfatta da tutti gli sta in cui t é abilitata. Per valutare en(t), nell implementazione vera e propria, si passa alla valutazione delle condizioni di abilitazione, cioé si verifica l espressione che richiede ad ogni posto in input a t una marcatura maggiore o uguale al peso dell arco tra il posto e t. Anche la proprietáâ di deadlock é utile includerla tra le proposizioni atomiche, essa é valida in tutti gli stati che non hanno successori. Il model checker sviluppato manipola l insieme degli stati solo attraverso le strutture dati simboliche, rappresentando anche le proposizioni atomiche attraverso i DD. 5.2 Realizzazione Il model checker CTL per reti di Petri é stato realizzato come estensione del tool GreatSPN, scritto in C++. Non da molto, questo strumento é stato

51 5.2 Realizzazione 51 Figura 5.1: Tabella delle strutture dati e delle operazioni attualmente implementate nella libreria MEDDLY aggiornato con l aggiunta di un modulo per la generazione dello spazio degli stati in simbolico rif articolo GreatSPN. Il model checker CTL si aggancia esattamente a questo modulo che gli fornisce le strutture dati simboliche di RS e della NSF. Sia il modulo che il model checker lavorano su un bound dei posti fissato a priori DD e librerie Recentemente é stata sviluppata una libreria in C++, MEDDLY rif, che supporta alcuni tipi di DD. Questa libreria implementa le strutture dati BDD ed MDD, piú alcune varianti quali i MTMDD e i EV*MDD EV + MDD con le relative operazioni (vedi figura 5.1). Gli MTMDD sono Multi Terminal MDD, cioé delle strutture dati come gli MDD ma che consentono di avere piú di due valori terminali. Teoricamente gli MTMDD rappresentano funzioni di tipo f : N 0 N 1... N k N. Ad ogni tupla dell insieme c é un valore associato. L implementazione attuale delle librerie, peró, presenta un problema: il valore zero come terminale viene utilizzato per indicare le tuple che non fanno parte dell insieme. Vedremo in dettaglio nella descrizione dell implementazione vera e propria come questo problema abbia influito. Gli EV*MDD e gli EV + MDD (Edge Valued MDD) sono altre estensione degli MDD e rappresentano lo stesso tipo di funzioni degli MTMDD. Anche

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

Luigi Piroddi piroddi@elet.polimi.it

Luigi Piroddi piroddi@elet.polimi.it Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,

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

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007 Sommario Macchine a stati finiti M. Favalli 5th June 27 4 Sommario () 5th June 27 / 35 () 5th June 27 2 / 35 4 Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante: Sommario Macchine a stati finiti M. Favalli Engineering Department in Ferrara 4 Sommario (ENDIF) Analisiesintesideicircuitidigitali / 35 (ENDIF) Analisiesintesideicircuitidigitali 2 / 35 4 Le macchine

Dettagli

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO Macchine a stati finiti 1 G. MARSELLA UNIVERSITÀ DEL SALENTO Introduzione Al più alto livello di astrazione il progetto logico impiega un modello, la cosiddetta macchina a stati finiti, per descrivere

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

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Reti sequenziali sincrone

Reti sequenziali sincrone Reti sequenziali sincrone Un approccio strutturato (7.1-7.3, 7.5-7.6) Modelli di reti sincrone Analisi di reti sincrone Descrizioni e sintesi di reti sequenziali sincrone Sintesi con flip-flop D, DE, T

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

1 Serie di Taylor di una funzione

1 Serie di Taylor di una funzione Analisi Matematica 2 CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 7 SERIE E POLINOMI DI TAYLOR Serie di Taylor di una funzione. Definizione di serie di Taylor Sia f(x) una funzione definita

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Introduzione all Information Retrieval

Introduzione all Information Retrieval Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information

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

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

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

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

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli

Complessità Computazionale

Complessità Computazionale Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION

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

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio Test (o analisi dinamica) Verifica parte IIA Rif. Ghezzi et al. 6.3-6.3.3 Consiste nell osservare il comportamento del sistema in un certo numero di condizioni significative Non può (in generale) essere

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

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

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

IL SOFTWARE SECONDO LA NORMA UNI EN ISO 13849-1:2008 (IIA PARTE) 1

IL SOFTWARE SECONDO LA NORMA UNI EN ISO 13849-1:2008 (IIA PARTE) 1 Ernesto Cappelletti (ErnestoCappelletti) IL SOFTWARE SECONDO LA NORMA UNI EN ISO 13849-1:2008 (IIA PARTE) 6 April 2012 1. Requisiti per la scrittura del software secondo la norma UNI EN ISO 13849-1:2008

Dettagli

Linguaggi. Claudio Sacerdoti Coen 11/04/2011. 18: Semantica della logica del prim ordine. <sacerdot@cs.unibo.it> 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

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello

Dettagli

TECNICHE DI SIMULAZIONE

TECNICHE DI SIMULAZIONE TECNICHE DI SIMULAZIONE INTRODUZIONE Francesca Mazzia Dipartimento di Matematica Università di Bari a.a. 2004/2005 TECNICHE DI SIMULAZIONE p. 1 Introduzione alla simulazione Una simulazione è l imitazione

Dettagli

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

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

APPLICAZIONI LINEARI

APPLICAZIONI LINEARI APPLICAZIONI LINEARI 1. Esercizi Esercizio 1. Date le seguenti applicazioni lineari (1) f : R 2 R 3 definita da f(x, y) = (x 2y, x + y, x + y); (2) g : R 3 R 2 definita da g(x, y, z) = (x + y, x y); (3)

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

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI 119 4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI Indice degli Argomenti: TEMA N. 1 : INSIEMI NUMERICI E CALCOLO

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

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

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa. Algebra booleana Nel lavoro di programmazione capita spesso di dover ricorrere ai principi della logica degli enunciati e occorre conoscere i concetti di base dell algebra delle proposizioni. L algebra

Dettagli

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

Soluzione di equazioni quadratiche

Soluzione di equazioni quadratiche Soluzione di equazioni quadratiche Soluzione sulla Retta Algebrica Inseriamo sulla Retta Algebrica le seguenti espressioni polinomiali x e x 3 e cerchiamo di individuare i valori di x per i quali i punti

Dettagli

Esempi di funzione. Scheda Tre

Esempi di funzione. Scheda Tre Scheda Tre Funzioni Consideriamo una legge f che associa ad un elemento di un insieme X al più un elemento di un insieme Y; diciamo che f è una funzione, X è l insieme di partenza e X l insieme di arrivo.

Dettagli

Rette e curve, piani e superfici

Rette e curve, piani e superfici Rette e curve piani e superfici ) dicembre 2 Scopo di questo articolo è solo quello di proporre uno schema riepilogativo che metta in luce le caratteristiche essenziali delle equazioni di rette e curve

Dettagli

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente Funzioni In matematica, una funzione f da X in Y consiste in: 1. un insieme X detto dominio di f 2. un insieme Y detto codominio di f 3. una legge che ad ogni elemento x in X associa uno ed un solo elemento

Dettagli

Ottimizzazione Multi Obiettivo

Ottimizzazione Multi Obiettivo Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

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

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. E. Calabrese: Fondamenti di Informatica Problemi-1 Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. L'informatica

Dettagli

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X. Algebra Di Boole L algebra di Boole è un ramo della matematica basato sul calcolo logico a due valori di verità (vero, falso). Con alcune leggi particolari consente di operare su proposizioni allo stesso

Dettagli

Come masterizzare dischi con Nero 11

Come masterizzare dischi con Nero 11 Come masterizzare dischi con Nero 11 Non c è dubbio che Nero è diventato un sinonimo di masterizzatore di dischi, data la lunga esperienza sul mercato. Molte persone pensano in questo programma nel momento

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

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

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente Prerequisiti Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente L opzione Provvigioni agenti è disponibile per le versioni Vendite, Azienda Light e Azienda Pro. Introduzione

Dettagli

La Metodologia adottata nel Corso

La Metodologia adottata nel Corso La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema

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

Progetto di simulazione molecolare per il corso di Complementi di algoritmi A.A. 2005-06

Progetto di simulazione molecolare per il corso di Complementi di algoritmi A.A. 2005-06 Progetto di simulazione molecolare per il corso di Complementi di algoritmi A.A. 2005-06 13 febbraio 2006 1 Descrizione Il progetto si compone delle seguenti fasi: 1. caricamento di soluzioni in formato

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

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Sistemi Informativi Territoriali. Map Algebra

Sistemi Informativi Territoriali. Map Algebra Paolo Mogorovich Sistemi Informativi Territoriali Appunti dalle lezioni Map Algebra Cod.735 - Vers.E57 1 Definizione di Map Algebra 2 Operatori locali 3 Operatori zonali 4 Operatori focali 5 Operatori

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

Semantica Assiomatica

Semantica Assiomatica Semantica Assiomatica Anche nella semantica assiomatica, così come in quella operazionale, il significato associato ad un comando C viene definito specificando la transizione tra stati (a partire, cioè,

Dettagli

Università degli Studi di Salerno

Università degli Studi di Salerno Università degli Studi di Salerno Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Tesi di Laurea Algoritmi basati su formule di quadratura interpolatorie per GPU ABSTRACT

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Consideriamo due polinomi

Consideriamo due polinomi Capitolo 3 Il luogo delle radici Consideriamo due polinomi N(z) = (z z 1 )(z z 2 )... (z z m ) D(z) = (z p 1 )(z p 2 )... (z p n ) della variabile complessa z con m < n. Nelle problematiche connesse al

Dettagli

Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili

Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili Questa presentazione intende illustrare brevemente la nuova funzionalità (Notifiche multiple di DM simili) predisposta

Dettagli

Base di dati e sistemi informativi

Base di dati e sistemi informativi Base di dati e sistemi informativi Una base di dati è un insieme organizzato di dati opportunamente strutturato per lo svolgimento di determinate attività La base di dati è un elemento fondamentale per

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

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda Fa quadrato attorno alla tua azienda Soluzioni software per L archiviazione elettronica dei documenti Perché scegliere Q Archiviazione Elettronica dei Documenti? Tale applicativo si pone come obbiettivo

Dettagli

FIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it

FIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it FIRESHOP.NET Gestione del taglia e colore www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione iniziale... 5 Gestione delle varianti... 6 Raggruppamento delle varianti... 8 Gestire le varianti

Dettagli

Il Metodo Branch and Bound

Il Metodo Branch and Bound Il Laura Galli Dipartimento di Informatica Largo B. Pontecorvo 3, 56127 Pisa laura.galli@unipi.it http://www.di.unipi.it/~galli 4 Novembre 2014 Ricerca Operativa 2 Laurea Magistrale in Ingegneria Gestionale

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Introduzione ai Metodi Formali

Introduzione ai Metodi Formali Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

Metodi Stocastici per la Finanza

Metodi Stocastici per la Finanza Metodi Stocastici per la Finanza Tiziano Vargiolu vargiolu@math.unipd.it 1 1 Università degli Studi di Padova Anno Accademico 2011-2012 Lezione 6 Indice 1 Il metodo bootstrap 2 Esercitazione 3 Interpolazione

Dettagli

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013 Complementi di Analisi per nformatica *** Capitolo 2 Numeri Complessi e Circuiti Elettrici a Corrente Alternata Sergio Benenti 7 settembre 2013? ndice 2 Circuiti elettrici a corrente alternata 1 21 Circuito

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

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

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

Probabilità discreta

Probabilità discreta Probabilità discreta Daniele A. Gewurz 1 Che probabilità c è che succeda...? Una delle applicazioni della combinatoria è nel calcolo di probabilità discrete. Quando abbiamo a che fare con un fenomeno che

Dettagli

Facoltà di Farmacia - Corso di Informatica

Facoltà di Farmacia - Corso di Informatica Basi di dati Riferimenti: Curtin cap. 8 Versione: 13/03/2007 1 Basi di dati (Database, DB) Una delle applicazioni informatiche più utilizzate, ma meno conosciute dai non informatici Avete già interagito

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video Video Librerie digitali Gestione di video Ogni filmato è composto da più parti Video Audio Gestito come visto in precedenza Trascrizione del testo, identificazione di informazioni di interesse Testo Utile

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

Norme per l organizzazione - ISO serie 9000

Norme per l organizzazione - ISO serie 9000 Norme per l organizzazione - ISO serie 9000 Le norme cosiddette organizzative definiscono le caratteristiche ed i requisiti che sono stati definiti come necessari e qualificanti per le organizzazioni al

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

PROBABILITÀ - SCHEDA N. 2 LE VARIABILI ALEATORIE

PROBABILITÀ - SCHEDA N. 2 LE VARIABILI ALEATORIE Matematica e statistica: dai dati ai modelli alle scelte www.dima.unige/pls_statistica Responsabili scientifici M.P. Rogantin e E. Sasso (Dipartimento di Matematica Università di Genova) PROBABILITÀ -

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