Modellazione di sistemi software (Peled, cap. 4) Modellare un sistema: rappresentarlo in termini di oggetti matematici che ne riflettono le

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Modellazione di sistemi software (Peled, cap. 4) Modellare un sistema: rappresentarlo in termini di oggetti matematici che ne riflettono le"

Transcript

1 Modellazione di sistemi software (Peled, cap. 4) Modellare un sistema: rappresentarlo in termini di oggetti matematici che ne riflettono le proprietà Modellare implica astrarre: semplificare la descrizione del sistema, conservando solo alcuni dei dettagli originari, focalizzandosi sulle proprietà principali e riuscendone a gestire la complessità Ad esempio, spesso si ignora la durata temporale dei processi Nelle metodologie di sviluppo del SW per raffinamenti: si definisce il modello, se ne verificano le proprietà, poi si concretizza in codice Sistemi sequenziali sono più semplici da modellare rispetto a quelli concorrenti Formalismi di modellazione Molti formalismi sono linguaggi di programmazione: si deve programmare la descrizione astratta del sistema. In alcuni casi ci sono traduttori automatici dalla descrizione originaria del sistema al formalismo di modellazione. Normalmente però l astrazione viene eseguita manualmente 1

2 Sistemi di Transizioni (TS) Costituiscono un formalismo astratto e generale per la descrizione di sistemi SW. Il comportamento di un sistema (sequenziale o concorrente) è descritto come se eseguisse una ed un unica azione elementare (transizione) alla volta, che trasformano uno stato del sistema in un altro. Il sistema si trova cioè in ogni istante in uno stato, dal quale può eseguire una transizione tra quelle abilitate in quello stato. Ogni transizione t abilitata in uno stato s trasforma s in uno stato s = t(s) Il processo continua finché si può eseguire almeno una transizione. Linguaggio: per descrivere il comportamento di un sistema, si definisce innanzitutto un linguaggio per rappresentare le variabili, i valori, le operazioni e le relazioni di cui occorre parlare, cioè una segnatura G = V, F, R Inoltre, si stabilisce: quali sono i valori che possono assumere le variabili e le costanti del linguaggio: un dominio D come si vogliono interpretare le costanti, i simboli di funzione e di predicato: una funzione di interpretazione f e l insieme F R su cui interpreta i simboli di funzione in F e quelli di relazione in R. In sostanza, si definisce una struttura del primo ordine, costituita da una segnatura G e un interpretazione M di G, sulla base della quale si descriverà il sistema. 2

3 Stati Uno stato contiene tutti i valori delle variabili del programma. Se le variabili del programma corrispondono a elementi di V : variabili di programma variabili logiche program counter(s) variabili logiche allora uno stato è un assegnazione a : V D: stati assegnazioni Esempio: siano V = {x, y} e D = IN. Lo stato x = 2 y = 1 è l assegnazione a tale che a(x) = 2 e a(y) = 1. Una formula senza quantificatori rappresenta un insieme di stati: tutti gli stati in cui è vera formula F {a (M, a) = F } (x > 2 y 3) x = 0 x = 0 y = 1 x = 2 y = 1 x = 3 y = 1 x = 4 y = 2 x = 4 y = 4 3

4 Sistemi descritti in un linguaggio proposizionale Se non interessano i valori specifici delle variabili, ma solo la verità o falsità di relazioni tra di esse (x > y), si può usare un linguaggio proposizionale: La segnatura G è costituita semplicemente da un insieme P di lettere proposizionali (o variabili proposizionali) le costanti true e false e i connettivi proposizionali sono simboli logici; il dominio dell interpretazione M è Bool = {T RU E, F ALSE} un assegnazione a è un interpretazione proposizionale Uno stato è dunque un interpretazione proposizionale. stato a : P Bool Un interpretazione proposizionale a si può rappresentare mediante un insieme di variabili proposizionali: tutte e solo quelle vere in a {p P a(p) = TRUE} Ad esempio, se P = {rich, work} lo stato {work} è l interpretazione a tale che a(work) = T RU E e a(rich) = F ALSE formula F {a a = F } work {work}, {work, rich} 4

5 Transizioni Il sistema si trova in ogni istante in uno stato, dal quale può eseguire una transizione tra quelle abilitate in quello stato. Ogni transizione t abilitata in uno stato s trasforma s in uno stato s = t(s) Quindi una transizione t è caratterizzata da: una condizione di abilitazione, che specifica a quali stati è applicabile una formula senza quantificatori, che identifica l insieme degli stati a cui t è applicabile; una descrizione dello stato t(s) che si ottiene applicando t al generico stato s: una descrizione di come vengono modificati i valori delle variabili passando da s a t(s). Stati iniziali Infine, si deve identificare l insieme degli stati iniziali del sistema una formula senza quantificatori 5

6 Un sistema di transizioni (TS) è una tripla: Sistemi di transizione: definizione (S, T, Θ) S è una struttura del primo ordine (G, D, F, R, f), con G = (V, F, R) oppure, nella nostra notazione: S = G, M. L insieme delle variabili V di G include le variabili di programma e i program counters T: insieme finito di transizioni Ogni t T ha la forma dove: p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) la condizione p è una formula senza quantificatori, v 1, v 2,..., v n V e 1, e 2,..., e n terms(g) Θ: condizione iniziale (formula senza quantificatori, che identifica gli stati iniziali). 6

7 Transizioni Una transizione t : p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) è abilitata (si può eseguire) in ogni stato s che soddisfa p (enabledness condition di t): t è abilitata in s sse (M, s) = p (nella notazione di Peled: s = S p) Come cambiano i valori delle variabili: se s eseguendo t in s, allora = t(s) è lo stato che si ottiene s (v i ) = T s (e i ) se 1 i n s(v i ) altrimenti per i = 1,..., n, il valore di v i in s è il valore di e i in s: s (v i ) = T s (e i ) per ogni altra variabile v {v 1, v 2,..., v n }, il valore di v in t(s) resta uguale al valore di v in s: s (v) = s(v) In altri termini, t(s) è la variante di s che assegna T s (e 1 ) a v 1,...,T s (e n ) a v n : t(s) = s[t s (e 1 )/v 1,..., T s (e n )/v n ] Si specificano solo i valori che cambiano nel passaggio da s a t(s). 7

8 Esempio t : x < y (x, y) := (y, x) L assegnazione (x, y) := (y, x) scambia i valori di x e y. s = x = 0 y = 1 z = 3 s = x = 1 y = 0 z = 3 t è abilitata in s e t(s) = s t non è abilitata in s 8

9 Sistemi di transizioni su un linguaggio proposizionale G = P è l insieme delle variabili proposizionali del linguaggio Θ è una formula proposizionale In una transizione t : p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) p è una formula del linguaggio; v i è una variabile proposizionale, per i = 1,..., n; e i è una formula, per i = 1,..., n. Esempio: con P = {rich, work}, sia t : work (work, rich) := (false, rich) s 0 = {work} t {rich} = t(s 0 ) s 1 = {work, rich} t Ø = t(s 1 ) t non è abilitata né in t(s 0 ) né in t(s 1 ). 9

10 Esecuzioni (run) Una esecuzione (run) di un sistema è una sequenza massimale di stati, che inizia in uno stato che soddisfa la condizione iniziale e dove ogni stato si ottiene dal precedente mediante una transizione. Un esecuzione termina solo se nell ultimo stato non è abilitata alcuna transizione. Per semplificare, ed evitare di avere sia esecuzioni finite che infinite, si considerano soltanto esecuzioni infinite: esecuzioni finite sono rappresentate da sequenze infinite in cui l ultimo stato si ripete all infinito. Un esecuzione di un sistema è dunque una sequenza infinita di stati s 0, s 1,... tali che: (M, s 0 ) = Θ (s 0 = S Θ ) per ogni i, vale uno di questi due casi: esiste una transizione t : p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) abilitata in s i, cioè tale che (M, s i ) = p e s i+1 = t(s i ), cioè s i+1 = s i [T si (e 1 )/v 1,..., T si (e n )/v n ] nessuna transizione è abilitata in s i e s i+1 = s i Stati raggiungibili: quelli che compaiono in qualche esecuzione del sistema 10

11 Esempio Sistema di transizioni sul linguaggio proposizionale P = {work, rich} Θ = rich work t 1 : work work := false t 2 : rich work := true t 3 : work (rich, work) := (true, false) t 4 : rich rich := rich Un sistema di transizioni genera uno spazio di stati: l insieme degli stati che possono essere generati dal sistema e delle transizioni tra di essi. t2 s1 {work} t1 t2 t3 s2 {} t4 s3 {rich} Un sistema di transizioni è un modo per descrivere implicitamente uno spazio di stati. 11

12 Esempio di modellazione di un programma Divisione intera Divisione del valore in x1 per il valore in x2. Quoziente in y1, resto in y2. Versione etichettata del programma m1: y1:=0; m2: y2:=x1; m3: while y2 >= x2 do m4: y1:=y1+1; m5: y2:=y2-x2 m6: end Segnatura: V = {x 1, x 2, y 1, y 2, pc} F = {0, 1, m 1,..., m 6, +, } R = { } Interpretazione: Dominio: IN; Interpretazione standard su IN dei simboli in R e F, arbitraria quella delle etichette (purché distinte). Stato iniziale: Θ = x 2 > 0 pc = m 1 Transizioni: t 1 : pc = m 1 (pc, y 1 ) := (m 2, 0) t 2 : pc = m 2 (pc, y 2 ) := (m 3, x 1 ) t 3 : pc = m 3 pc := if(y 2 x 2, m 4, m 6 ) t 4 : pc = m 4 (pc, y 1 ) := (m 5, y 1 + 1) t 5 : pc = m 5 (pc, y 2 ) := (m 3, y 2 x 2 ) oppure: t 3 : pc = m 3 y 2 x 2 pc := m 4 t 3 : pc = m 3 y 2 < x 2 pc := m 6 12

13 Sistemi concorrenti La modellazione di un sistema concorrente mediante un TS si basa sul modello interleaving del calcolo È un modello più semplice di altri, secondo il quale un sistema concorrente viene modellato assumendo che tutti gli eventi di una singola esecuzione siano ordinati in un ordine lineare, chiamato interleaving sequence. Transizioni eseguite contemporaneamente appaiono ordinate linearmente. L esecuzione delle componenti del sistema concorrente è asincrona o alternata (interleaved). Qui assumiamo inoltre che la comunicazione tra componenti del sistema concorrente avvenga mediante variabili condivise (e non message passing). 13

14 Interleaving model Secondo l interleaving model viene eseguita una transizione alla volta: se ci sono più processi la loro esecuzione è alternata (modello della multiprogrammazione). In realtà non è sempre così, nei sistemi distribuiti le transizioni possono essere contemporanee. Ma spesso sono commutative: α : x := x + 1 x = 1 x = 2 y = 1 y = 2 β : y := y + 1 rappresentato da x = 1 y = 1 α : x := x + 1 β : y := y + 1 x = 2 y = 1 x = 1 y = 2 β : y := y + 1 α : x := x + 1 x = 2 y = 2 Se le transizioni non sono commutative (esempio α : x := x + 1 e β : x := x 2) non possono essere eseguite contemporaneamente 14

15 Esempio Due processi: P 1 e P 2 P1 : x := x + y; P2 : y := y + x Stato iniziale: x = 2, y = 3 Versione etichettata dei due programmi l1: x:=x+y r1: y:=y+x l2: end r2: end Sistema di transizioni: S = (G, D, F, R, f) con G = (V, F, R), V = {x, y, pc l, pc r ), F = {l 1, l 2, r 1, r 2, +}, R = {=} D = IN, interpretazione standard di = e +, interpretazione arbitraria di l 1, l 2, r 1, r 2. Transizioni: t 1 : pc l = l 1 (pc l, x) := (l 2, x + y) t 2 : pc r = r 1 (pc r, y) := (r 2, y + x) Θ = x = 2 y = 3 pc l = l 1 pc r = r 1 Esercizio: disegnare lo spazio degli stati raggiungibili corrispondente al TS dato. Identificare le esecuzioni del sistema. 15

16 Granularità delle transizioni Nella maggior parte dei casi la modellazione di un sistema è fatta manualmente: non esiste ricetta generale Uno dei problemi più delicati è quello della scelta del livello di dettaglio appropriato Granularità troppo piccola (troppi dettagli): il modello contiene più informazioni di quelle che servono. Esplosione dello spazio degli stati Granularità troppo grande (pochi dettagli): si possono perdere informazioni sull interazione tra processi e non si coprono tutti i comportamenti possibili 16

17 Esempio Due processi: P 1 e P 2 P1 : x := x + y; P2 : y := y + x Stato iniziale: x = 2, y = 3 Modello A. A ogni istruzione del linguaggio corrisponde una transizione Ci sono due esecuzioni possibli: prima P 1 poi P 2 : stato finale x = 5, y = 8 prima P 2 poi P 1 : stato finale x = 7, y = 5 Modello B. Le variabili sono conservate nelle locazioni m100 e m111, rispettivamente. Vengono caricate nei registri r 1 e r 2, sono eseguite le addizioni, e i valori rimemorizzati nelle locazioni rispettive. P 1 : load r1, m100 add r1, m111 store r1, m100 Assumiamo che i valori iniziali dei registri sia 0. P 2 : load r2, m1111 add r2, m100 store r2, m111 Se ogni istruzione corrisponde a una transizione, ci sono 20 esecuzioni alternate (interleaved) possibili. 17

18 La sequenza seguente load r1, m100 load r2, m111 add r1, m111 add r2, m100 store r1, m100 store r2, m111 risulta nello stato in cui x = m100 = 5 y = m111 = 5 Con il primo modello: non si coglie una possibile interazione tra istruzioni macchina. La verifica potrebbe non identificare possibili errori. Con il secondo modello: se l implementazione reale corrisponde alla granularità più alta, il modello include comportamenti che in realtà non sono possibili (falsi negativi) Esercizio: definire un TS corrispondente al modello B e disegnare lo spazio degli stati raggiungibili 18

19 Combinazioni n k = = n (n 1)... (n k + 1) k 1 n (n 1)... (n (k 1)) k 1 n 1 (n 1) 2 (n 2) (n (k 1)) = k 1 k Dopo p moltiplicazioni, si possono fare le prime p divisioni, ma non ancora la (p + 1)-esima Valori iniziali: y1=n, y2=0, y3=1 y1 va da n a n-k+1: n-y1 conta le moltiplicazioni y2 va da 0 a k-1: conta le divisioni y3: risultato finale l1: if y1 = n-k then halt r1: if y2=k then halt l2: y3:=y3*y1 r2: y2:=y2+1 l3: y1:=y1-1 r3: await y2 <= n-y1 l4: goto l1 r4: y3:=y3/y2 r5: goto r1 19

20 Combinazioni (II) Segnatura:... Interpretazione:... t 1 : pc l = l 1 pc l := if(y 1 = n k, halt l, l 2 ) t 2 : pc l = l 2 (pc l, y 3 ) := (l 3, y 3 y 1 ) t 3 : pc l = l 3 (pc l, y 1 ) := (l 4, y 1 1) t 4 : pc l = l 4 pc l := l 1 t 5 : pc r = r 1 pc r := if(y 2 = k, halt r, r 2 ) t 6 : pc r = r 2 (pc r, y 2 ) := (r 3, y 2 + 1) t 7 : pc r = r 3 y 2 n y 1 pc r := r 4 t 8 : pc r = r 4 (pc r, y 3 ) := (r 5, y 3 /y 2 ) t 9 : pc r = r 5 pc r := r 1 Θ = y 1 = n y 2 = 0 y 3 = 1 pc l = l 1 pc r = r 1 n > 0 k > 0 20

21 Alcuni stati raggiungibili per n = 3, k = 2 stato pc l pc r y 1 y 2 y 3 s1 l 1 r s2 l 2 r s3 l 2 r s4 l 3 r s5 l 3 r s6 l 4 r s7 l 2 r t2 s4 t3 s6 t1 s2 t5 s5 s1 t5 s3 t6 s7 21

22 Il setaccio di Eratostene Per generare tutti i numeri primi minori o uguali a P: 1. Mettere nel setaccio tutti i numeri interi compresi tra 2 e P 2. Ripetere finché il setaccio non è vuoto: (a) Togliere dal setaccio il numero più piccolo M e includerlo tra i numeri primi (b) Rimuovere dal setaccio tutti i multipli di M Processo di sinistra: genera gli interi da 2 a P N processi di mezzo: l i-esimo processo di mezzo conserva l i-esimo numero primo P i e filtra i successivi, passando al processo seguente solo quelli che non sono multipli di P i Processo di destra: conserva l N + 1-esimo numero primo. 22

23 Mutua esclusione Due processi in competizione per entrare in una sezione critica in cui utilizzano una risorsa condivisa. Quando un processo non è nella sua sezione critica, è nella sezione non critica. Proprietà del protocollo che gestisce la concorrenza: Esclusione: i processi non entrano contemporaneamente nelle rispettive sezioni critiche Liveness: se un processo richiede di accedere alla sezione critica, gli sarà consentito in un tempo finito. Un tentativo di risolvere il problema della mutua esclusione boolean c1, c2 initially 1 P1:: m1: while true do m2: (* noncritical section 1 *) m3: c1:=0; m4: wait until c2=1 m5: (* critical section 1 *) m6: c1:=1 end P2:: n1: while true do n2: (* noncritical section 2 *) n3: c2:=0; n4: wait until c1=1 n5: (* critical section 1 *) n6: c2:=1 end Si assume che le sezioni non critiche non cambino i valori di c1 e c2. Una sezione non critica potrebbe non terminare, ma le sezioni critiche terminano sempre 23

24 Sistema di transizioni t1 : pc 1 = m1 pc 1 := m2 t2 : pc 1 = m2 pc 1 := m3 t2 : pc 1 = m2 pc 1 := m2 (* loop *) t3 : pc 1 = m3 (pc 1, c1) := (m4, 0) t4 : pc 1 = m4 c2 = 1 pc 1 := m5 t5 : pc 1 = m5 pc 1 := m6 t6 : pc 1 = m6 (pc 1, c1) := (m1, 1) t7 : pc 2 = n1 pc 2 := n2 t8 : pc 2 = n2 pc 2 := n3 t8 : pc 2 = n2 pc 2 := n2 (* loop *) t9 : pc 2 = n3 (pc 2, c2) := (n4, 0) t10 : pc 2 = n4 c1 = 1 pc 2 := n5 t11 : pc 2 = n5 pc 2 := n6 t12 : pc 2 = n6 (pc 2, c2) := (n1, 1) Θ = pc 1 = m1 pc 2 = n1 c1 = 1 c2 = 1 Esercizio: rappresentare (una parte di) lo spazio degli stati generato, in particolare quello contenente gli stati generati dalla sequenza di transizioni t1, t2, t3, t7, t8, t9. Ci sono transizioni abilitate nello stato che si ottiene? 24

25 Automi Un TS descrive implicitamente lo spazio degli stati del sistema (l insieme degli stati e delle transizioni): un automa (un grafo) dove: S: insieme di stati A = (S,, I) S S: relazione di transizione (s, s ) se esiste una transizione atomica da s a s I S: insieme degli stati iniziali Si possono aggiungere altre componenti: etichette sugli archi, etichette sugli stati,... Esecuzioni (run) Una run dell automa (S,, I) è una sequnza massimale s 0, s 1,... tale che: s 0 I per ogni i: (s i, s i+1 ) Massimale: o è infinita, oppure l ultimo stato non ha successori (nessuna transizione è abilitata) 25

26 Automi con etichettatura degli stati A = (S,, I, L, Σ) dove S,, I sono come sopra e: Σ è l alfabeto: un insieme (di etichette); L : S Σ è una funzione che associa un etichetta a ciascuno stato. 26

27 Strutture di Kripke Automi in cui ogni stato è etichettato da un insieme di variabili proposizionali (S,, I, L P, 2 P ) dove P è un insieme di variabili proposizionali Per rappresentare proprietà di sistemi a stati finiti spesso si usano formalismi proposizionali. Ogni stato del sistema è allora etichettato da un insieme di lettere proposizionali L P : S 2 P dove P è l insieme di variabili proposizionali che rappresentano proprietà del sistema L P (s) è l insieme delle variabili proposizionali vere in s Questo equivale a considerare ogni stato come un assegnazione a variabili booleane, o un interpretazione proposizionale, dove s = p sse p L P (s) 27

28 ASSUNZIONI DI FAIRNESS A volte non si vogliono considerare tutte le esecuzioni del modello del sistema, perché alcune di esse, sebbene presenti nel modello, non lo sono nel sistema Assunzioni di fairness: vincoli semantici imposti sulle esecuzioni, per escludere quelle irragionevoli Esempio: P 1 e P 2 eseguiti per sempre, senza interazioni Una esecuzione alternata è s 0, s 1,... con s i+1 ottenuto da s i eseguendo una transizione di P 1 o una di P 2. In ogni stato è sempre abilitata sia una transizione di P 1 che una di P 2. Nel modello ci sono anche esecuzioni dove, da un certo punto in poi, si eseguono solo transizioni di P 1 (o di P 2 ). Una rappresentazione fedele dovrebbe soddisfare il vincolo di fairness: ogni esecuzione contiene un numero infinito di transizioni di ciascun processo. Una modellazione esatta dovrebbe tener conto dello scheduler reale, ma il modello sarebbe troppo specifico e poco pratico. Si usa un modello più semplice con fairness constraints che escludono le esecuzioni irragionevoli. 28

29 Vincoli di fairness semplici In alcuni formalismi, un vincolo di fairness è espresso mediante un insieme di stati f S un path è fair se contiene un elemento di f infinitamente spesso. Un insieme di vincoli di fairness è un insieme F 2 S : F = {f 1,..., f k } con f i S Un esecuzione è fair se, per ciascun i = 1,..., k, contiene infinite occorrenze di un elemento di f i. In un sistema di transizioni, in cui sono definite una segnatura e la sua interpretazione, un vincolo di fairness (insieme di stati) si può rappresentare mediante una formula senza quantificatori F: s f se e solo se (M, s) = F 29

30 P 1 :: x:=1 Esempio 1 P 2 :: while y=0 do [ no op # if x=1 then y:=1 ] /* #: scelta non deterministica La variabile x è condivisa, y è locale a P 2. Entrambe inizializzate a 0. Variabili per i program counter: pc l e pc r, con valori l 0 e l 1, e r 0 e r 1, rispettivamente. Versione etichettata: P1 P2 l0: x:=1 r0: while y=0 do l1: end r1: no_op # if x=1 then y:=1 Transizioni: t 0 : pc l = l 0 (pc l, x) := (l 1, 1) t 1 : pc r = r 0 y = 0 pc r := r 1 (inizio del ciclo) t 2 : pc r = r 1 pc r := r 0 (esecuzione di no op e ritorno a inizio ciclo) t 3 : pc r = r 1 x = 1 (pc r, y) := (r 0, 1) (assegnazione e ritorno a inizio ciclo) Condizione iniziale: Θ : x = 0 y = 0 pc l = l 0 pc r = r 0 30

31 Esempio 1 (continua) 0 0 l 0 r 0 t 1 t 0 t l 1 r 0 l 0 r 1 t 2 t 1 t 0 t l 1 r 1 l 1 r 0 Il modello non esclude esecuzioni in cui non viene mai eseguita la transizione t 0 oppure la t 3. Se si sa che lo scheduler reale in realtà esclude tali esecuzioni si può aggiungere al modello del sistema il vincolo di fairness 1 1 f = l 1 r 0 Equivalentemente, il vincolo si può esprimere mediante una formula F: y = 1 Le esecuzioni fair sono quelle che rendono vero y = 1 infinite volte. 31

32 Esempio 2 t2 s1 {work} t1 t2 t3 s2 {} t4 s3 {rich} Se vogliamo escludere (come irrealistiche!) tutte le esecuzioni in cui non si diventa mai ricchi, si può aggiungere alla descrizione del sistema il vincolo di fairness O, equivalentemente, Infatti F è vera in tutti e soli gli stati di f f = {s3} F = rich Le esecuzioni fair sono quelle che rendono vere F infinitamente spesso: cioè quelle che contengono s3: s1,..., s1, s3, s3, s3, s3,... 32

33 Esempio 3: il comportamento di un semaforo s1 {yellow} s2 {red} s0 {green} Se si vogliono escludere come irrealistiche le esecuzioni in cui da un certo punto in poi il semaforo resta indefinitivamente dello stesso colore, si possono aggiungere i vincoli di fairness F = {f 1, f 2 } con f 1 = {s0} e f 2 = {s2} I due vincoli di fairness possono essere espressi mediante l insieme di formule Φ = {green, red} 33

34 Esempio 4: due processi con una risorsa condivisa Si vogliono escludere le esecuzioni in cui: s0 {} uno dei due processi, pur avendo richiesto di accedere alla risorsa condivisa, non venga mai servito; s1 {reqb} s2 {reqa} il servizio di un processo duri all infinito. s6 {serveb} s4 {servea, reqb} s3 {reqa, reqb} s5 {serveb, reqa} s7 {servea} Esecuzioni fair: per ogni stato t dell esecuzione, se t contiene reqx (per X = A o X = B), allora esiste uno stato t successivo a t che non contiene reqx (X è stato servito e il suo servizio è terminato). F = {{s0, s4}, {s0, s5}} {s0, s4} ( reqa serveb reqb servea) ( reqa serveb reqb servea) reqa serveb (reqb servea) Φ = { reqa serveb (reqb servea), reqb servea (reqa serveb)} 34

35 Le esecuzioni fair sono quelle in cui green si verifica infinite volte e anche red si verifica infinite volte. 35

Modellazione di sistemi software

Modellazione di sistemi software Modellazione di sistemi software Modellare un sistema: rappresentarlo in termini di oggetti matematici che ne riflettono le proprietà Modellare implica astrarre: semplificare la descrizione del sistema,

Dettagli

Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di

Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di rappresentazione per descrivere programmi e specifiche. ω-automi:

Dettagli

Specifica formale. Verifica formale (Prima parte) 03: Logica temporale lineare 1 / 26

Specifica formale. Verifica formale (Prima parte) 03: Logica temporale lineare 1 / 26 Specifica formale La correttezza di un programma è relativa a una determinata specifica: la verifica formale è connessa alle specifiche Linguaggi di specifica Automi LTL (Linear Temporal Logic): una specifica

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Tripla di Hoare soddisfatta A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.

Dettagli

Metodi formali per la verifica dell affidabilità di sistemi: materiale didattico

Metodi formali per la verifica dell affidabilità di sistemi: materiale didattico Metodi formali per la verifica dell affidabilità di sistemi: materiale didattico Prima parte: verifica basata su logica temporale lineare Peled: Software Reliability Methods, cap. 1. Katoen: Concepts,

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Laurea in Ingegneria Civile e Ambientale Algoritmi e Algebra di Boole Stefano Cagnoni Il problema di fondo Descrizione

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano

Dettagli

CAPITOLO 3 - ALGORITMI E CODIFICA

CAPITOLO 3 - ALGORITMI E CODIFICA FASI DI SVILUPPO DEL SOFTWARE Problema Idea (soluzione) Algoritmo (soluzione formale) Programma (traduzione dell algoritmo in una forma comprensibile da un elaboratore elettronico) Test (criteri di verifica)

Dettagli

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco:

Dettagli

Architetture data-flow

Architetture data-flow Architetture data-flow Le architetture che abbiamo visto finora sono dette architetture control flow. Ciò sta ad indicare che il flusso dell elaborazione è dettato dall ordine con cui le varie istruzioni

Dettagli

Linguaggi di specifica

Linguaggi di specifica Specifica formale (Peled, cap. 5) Importanza della specifica formale di un progetto (sviluppato in mesi, da diverse persone, modificato,...) Correttezza di un programma rispetto alla specifica: verifica

Dettagli

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi

Dettagli

Ingegneria del software

Ingegneria del software Ingegneria del software Reti di Petri Rosario Culmone rosario.culmone@unicam.it 10/5/2010 UNICAM - p. 1/28 Presentazione Le reti di Petri furono inventate nel 1962 da Carl Adam Petri durante la sua tesi

Dettagli

Intelligenza Artificiale I

Intelligenza Artificiale I Intelligenza rtificiale I Logica formale Primi elementi Marco Piastra Logica formale - Primi elementi - Sottoinsiemi e operatori Sottoinsiemi U Insieme di riferimento (insieme sostegno) {,, C, } Collezione

Dettagli

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

Dettagli

Logica: materiale didattico

Logica: materiale didattico Logica: materiale didattico M. Cialdea Mayer. Logica (dispense): http://cialdea.dia.uniroma3.it/teaching/logica/materiale/dispense-logica.pdf Logica dei Predicati (Logica per l Informatica) 01: Logica

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Intelligenza Artificiale II. Logiche modali e temporali

Intelligenza Artificiale II. Logiche modali e temporali Intelligenza Artificiale II Logiche modali e temporali Marco Piastra Logiche non classiche - 1 1 Logiche modali Logiche non classiche - 2 Un paradosso? Una fbf di L P ( ) ( ) Si tratta di una tautologia

Dettagli

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

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

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 7 Semantica della Logica del Primo Ordine pag. 1 Esempio di Semantica: Alfabeto e Interpretazioni Consideriamo

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Codifica dei numeri Rappresentazioni in base 2, 8, 10 e 16 Rappresentazioni M+S, C1 e C2 Algoritmi di conversione di base Algoritmi di somma, moltiplicazione e divisione

Dettagli

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p. Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione

Dettagli

ufficio: Ca Vignal 2, primo piano, stanza 80 ricevimento: Giovedì, oppure su appuntamento

ufficio: Ca Vignal 2, primo piano, stanza 80 ricevimento: Giovedì, oppure su appuntamento Contatti e-mail: davide.bresolin@univr.it ufficio: Ca Vignal 2, primo piano, stanza 80 ricevimento: Giovedì, 11-12 oppure su appuntamento Sistemi in Tempo Reale (Lab) Uppaal 6 Novembre 2008 1 / 29 Lezione

Dettagli

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale LOGICA DI HOARE INTRODUZIONE Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: es. grammatica in BNF Semantica spesso data in modo informale di stile operazionale

Dettagli

Dispensa di Informatica Teorica (Elementi) - Teorema di Cook

Dispensa di Informatica Teorica (Elementi) - Teorema di Cook Teorema di ook (Idea generale) Dato L NP, costruire una trasformazione polinomiale f da L a L (sodd, e), cioè il linguaggio composto dalle stringhe che corrispondono ad istanze del problema sodd. La trasformazione

Dettagli

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome 1) Il termine informatica viene dalla fusione delle seguenti parole a) informazione

Dettagli

Semantiche dei linguaggi di programmazione

Semantiche dei linguaggi di programmazione Semantiche dei linguaggi di programmazione By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents La semantica del linguaggio... 1 Tipi di semantica... 1 Esempio di semantica operazionale...

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

Verifica di programmi

Verifica di programmi Verifica di programmi Informalmente, un programma è corretto se l output prodotto è quello atteso rispetto all input. La correttezza dei programmi può essere espressa mediante formule per la correttezza

Dettagli

Somma 3-bit. somma 3-bit con I/O sequenziale. somma 3-bit con I/O sequenziale. Osservazione

Somma 3-bit. somma 3-bit con I/O sequenziale. somma 3-bit con I/O sequenziale. Osservazione RETI COMBINATORIE In una rete combinatoria l uscita è funzione dei soli ingressi u = f () ADDIZIONATORE PARALLELO Addizionatore parallelo (a propagazione di riporto - ripple carry) per numeri binari di

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi

Dettagli

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la

Dettagli

Il primo programma C++

Il primo programma C++ Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 Algoritmo, programma, processo Algoritmo Programma Processo Procedimento logico che deve essere eseguito per risolvere un determinato problema. Descrizione

Dettagli

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE. Algoritmo, programma, processo

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE. Algoritmo, programma, processo PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 Processo sequenziale Sequenza di stati attraverso i quali passa l elaboratore durante l esecuzione di un programma (storia di un processo o traccia dell

Dettagli

La programmazione nel linguaggio JavaScript. Il programma

La programmazione nel linguaggio JavaScript. Il programma Il programma Nei linguaggi di programmazione il programma è una funzione che ha come argomento i dati digitati in input e opportunamente convertiti. la descrizione della funzione (ovvero il programma)

Dettagli

Il linguaggio JavaScript

Il linguaggio JavaScript Il linguaggio JavaScript JavaScript è un linguaggio di programmazione ad alto livello compatto e comprensibile. sintassi e semantica sono formalmente definite, compatto e comprensibile. appartiene alla

Dettagli

02 - Logica delle dimostrazioni

02 - Logica delle dimostrazioni Università degli Studi di Palermo Facoltà di Economia Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 0 - Logica delle dimostrazioni Anno Accademico 015/016

Dettagli

Architettura degli Elaboratori, Esercitazione 1

Architettura degli Elaboratori, Esercitazione 1 Architettura degli Elaboratori, 2008-09 Esercitazione 1 Ogni esercitazione ha lo scopo di servire da guida per la preparazione su una specifica parte del corso. È fortemente consigliato che lo studente

Dettagli

Processi non sequenziali e tipi di interazione

Processi non sequenziali e tipi di interazione Processi non sequenziali e tipi di interazione Algoritmo, programma, processo Algoritmo: Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma: Descrizione di un

Dettagli

Processi non sequenziali e tipi di interazione

Processi non sequenziali e tipi di interazione Processi non sequenziali e tipi di interazione 1 Algoritmo, programma, processo Algoritmo: Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma: Descrizione di

Dettagli

Logica Proposizionale

Logica Proposizionale Intelligenza rtificiale I Logica Proposizionale Introduzione Marco Piastra Intelligenza rtificiale I -.. 28-29 29 Introduzione al corso ] lgebre di Boole Definizione Una collezione di oggetti X su cui

Dettagli

LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI. Corso di Logica per la Programmazione A.A Andrea Corradini

LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI. Corso di Logica per la Programmazione A.A Andrea Corradini LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI Corso di Logica per la Programmazione A.A. 2013 Andrea Corradini LIMITI DEL CALCOLO PROPOSIZIONALE Nella formalizzazione di enunciati dichiarativi,

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

= < < < < < Matematica 1

= < < < < < Matematica  1 NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato

Dettagli

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 ALGORITMO, PROGRAMMA, PROCESSO Algoritmo Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma Descrizione di un

Dettagli

Fondamenti di programmazione parte 2. Elementi di informatica IGLP

Fondamenti di programmazione parte 2. Elementi di informatica IGLP Fondamenti di programmazione parte 2 Elementi di informatica IGLP Questo insieme di trasparenze è stato ideato e realizzato dai ricercatori e professori del Dipartimento di Informatica e Sistemistica dell

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell'informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L'algebra

Dettagli

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Abbiamo visto È conveniente definire una macchina astratta C Lo stato della macchina ci

Dettagli

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd Fondamenti d Informatica: linguaggi formali Barbara Re, Phd Agenda } Introdurremo } La nozione di linguaggio } Strumenti per definire un linguaggio } Espressioni Regolari 2 Linguaggio } Da un punto di

Dettagli

LOGICA DEL PRIMO ORDINE: SEMANTICA. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

LOGICA DEL PRIMO ORDINE: SEMANTICA. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella LOGICA DEL PRIMO ORDINE: SEMANTICA Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella LA SEMANTICA DELLA LOGICA DEL PRIMO ORDINE Sia fissato un linguaggio L del primo

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 6 Logica del Primo Ordine Motivazioni Sintassi Interpretazioni Formalizzazione pag. 1 Limiti del Calcolo Proposizionale Nella formalizzazione di enunciati dichiarativi,

Dettagli

Esercitazione 11. Control-Unit. Data-Path

Esercitazione 11. Control-Unit. Data-Path Esercitazione 11 Sommario Unità di controllo cablate 1. Unità di controllo L architettura interna di una CPU può essere modellata attraverso una struttura costituita da 2 unità interagenti: percorso dati

Dettagli

Ragionamento Automatico Richiami di tableaux proposizionali

Ragionamento Automatico Richiami di tableaux proposizionali Richiami di logica e deduzione proposizionale Ragionamento Automatico Richiami di tableaux proposizionali (L. Carlucci Aiello & F. Pirri: SLL, Cap. 5) La logica proposizionale I tableau proposizionali

Dettagli

FUNZIONI BOOLEANE. Vero Falso

FUNZIONI BOOLEANE. Vero Falso FUNZIONI BOOLEANE Le funzioni booleane prendono il nome da Boole, un matematico che introdusse un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono

Dettagli

Verifica parte IIB. Rif. Ghezzi et al

Verifica parte IIB. Rif. Ghezzi et al Verifica parte IIB Rif. Ghezzi et al. 6.3.4.1 Sommario Test In piccolo White box Black box Condizioni di confine Problema dell' Oracolo In grande Test di modulo Test di integrazione Test di Sistema Test

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

CORSO DI PROGRAMMAZIONE

CORSO DI PROGRAMMAZIONE ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE INTRODUZIONE ALLE ISTRUZIONI ITERATIVE DISPENSA 03.01 03-01_Iterazioni_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative

Dettagli

Linguaggi e Traduttori: Analisi lessicale

Linguaggi e Traduttori: Analisi lessicale Linguaggi e Traduttori: Analisi lessicale Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-La) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di Genova

Dettagli

Automi e Macchine. Computabilità. Progetto Nazionale Lauree Scientifiche Licei Fracastoro e Messedaglia Verona, novembre/dicembre 2012.

Automi e Macchine. Computabilità. Progetto Nazionale Lauree Scientifiche Licei Fracastoro e Messedaglia Verona, novembre/dicembre 2012. Automi e Macchine Computabilità Progetto Nazionale Lauree Scientifiche Licei Fracastoro e Messedaglia Verona, novembre/dicembre 2012 Computabilità AA 2012/13 Ugo Solitro Sommario Introduzione Automi a

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

Dettagli

Luigi Piroddi

Luigi Piroddi Automazione industriale dispense del corso (a.a. 2008/2009) 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul

Dettagli

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al Verifica parte IIB Rif. Ghezzi et al. 6.3.4.1 Test In piccolo White box Black box Condizioni di confine Problema dell' Oracolo In grande Test di modulo Test di integrazione Test di Sistema Test di Accettazione

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Prerequisiti Matematici

Prerequisiti Matematici Prerequisiti Matematici Richiami di teoria degli insiemi Relazioni d ordine, d equivalenza Richiami di logica Logica proposizionale, tabelle di verità, calcolo dei predicati Importante: Principio di Induzione

Dettagli

Ing. Lorenzo Vismara

Ing. Lorenzo Vismara Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&&#2! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)&#7& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#

Dettagli

Alberi di sequenti per un linguaggio predicativo L 1.

Alberi di sequenti per un linguaggio predicativo L 1. Alberi di sequenti per un linguaggio predicativo L 1. Si estenda il linguaggio L 1 con un insieme C infinito numerabile di costanti individuali. Un multinsieme è un insieme con ripetizioni. Un sequente

Dettagli

I.4 Rappresentazione dell informazione

I.4 Rappresentazione dell informazione I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione

Dettagli

LEZIONI 30/09/09-2/10/09

LEZIONI 30/09/09-2/10/09 LEZIONI 30/09/09-2/10/09 1. Introduzione La Logica viene usata in Informatica in tutte quelle situazioni in cui un sistema informatico viene modellato da un oggetto matematico e si vuole ragionare in modo

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

Aritmetica dei Calcolatori Elettronici

Aritmetica dei Calcolatori Elettronici Aritmetica dei Calcolatori Elettronici Prof. Orazio Mirabella L informazione Analogica Segnale analogico: variabile continua assume un numero infinito di valori entro l intervallo di variazione intervallo

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 Linguaggi e Complessità : Lezione 1 Corso Fondamenti di Informatica 2 Marco Schaerf, 2009-2010 Linguaggi e Complessità : Lezione 1 1 Logica proposizionale Linguaggio matematico

Dettagli

AUTOMA A STATI FINITI

AUTOMA A STATI FINITI Gli Automi Un Automa è un dispositivo, o un suo modello in forma di macchina sequenziale, creato per eseguire un particolare compito, che può trovarsi in diverse configurazioni più o meno complesse caratterizzate

Dettagli

Elementi di teoria degli insiemi

Elementi di teoria degli insiemi ppendice Elementi di teoria degli insiemi.1 Introduzione Comincia qui l esposizione di alcuni concetti primitivi, molto semplici da un punto di vista intuitivo, ma a volte difficili da definire con grande

Dettagli

Concetti Introduttivi. Il Computer

Concetti Introduttivi. Il Computer Concetti Introduttivi Il Computer Introduzione Informazione Notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere Messaggio Tutto ciò che porta

Dettagli

Reti combinatorie. Reti combinatorie (segue)

Reti combinatorie. Reti combinatorie (segue) Reti combinatorie Sommatore Sottrattore Reti sequenziali Generatore di sequenze Riconoscitore di sequenze Reti combinatorie PROGRAMMAZIONE Il programmatore riporta le istruzioni che il calcolatore dovrà

Dettagli

Reti combinatorie (segue) Reti combinatorie. Lezione 2. Architettura degli Elaboratori A. Sperduti 1

Reti combinatorie (segue) Reti combinatorie. Lezione 2. Architettura degli Elaboratori A. Sperduti 1 Reti combinatorie Reti sequenziali Sommatore Sottrattore Generatore di sequenze Riconoscitore di sequenze PROGRAMMAZIONE Il programmatore riporta le istruzioni che il calcolatore dovrà eseguire, in un

Dettagli

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense. Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Dettagli

METODI MATEMATICI PER L INFORMATICA

METODI MATEMATICI PER L INFORMATICA METODI MATEMATICI PER L INFORMATICA ANNO ACCADEMICO 2011/2012 Sommario. Sintassi e semantica della Logica dei predicati. Proprietà fondamentali dei quantificatori. Strutture, soddisfacibilità e verità

Dettagli

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3 Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2007/08 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi Istruzioni variabili e tipi Sottoprogrammi Strutture di controllo Ricorsione 1 2 Obiettivo Ciclo di sviluppo di programmi Risoluzione

Dettagli

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Dati e Istruzioni Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/28 Comunicazione dell algoritmo all

Dettagli

Intelligenza Artificiale. Logica Prime definizioni

Intelligenza Artificiale. Logica Prime definizioni Intelligenza rtificiale Logica Prime definizioni Marco Piastra Logica formale (Parte ) - Parte Sottoinsiemi lgebra di oole Linguaggio proposizionale Soddisfacibilità Conseguenza logica Logica formale (Parte

Dettagli

Cenni di logica e calcolo proposizionale

Cenni di logica e calcolo proposizionale Cenni di logica e calcolo proposizionale Corso di Laurea in Informatica Università degli Studi di Bari (sede Brindisi) Analisi Matematica S.Milella (sabina.milella@uniba.it) Cenni di logica 1 / 10 Proposizioni

Dettagli