Reti di Petri
Condizioni e eventi
Gli eventi sono i quadrati e le condizioni i cerchi.
Una condizione e’ soddisfatta se contiene un “token”
.
primavera
inizio estate
estate
inizio autunno
inizio primavera
inverno
inizio inverno
autunno
Condizioni e eventi
Possiamo aggiungere condizioni
.
primavera
inizio estate
inverno o primavera
.
inizio primavera
inverno
estate
.
non autunno
inizio inverno
inizio autunno
autunno
Condizioni e eventi
primavera
inizio estate
inverno o primavera
.
estate
.
non autunno
inizio primavera
inverno
inizio inverno
inizio autunno
autunno
Posti e transizioni
I posti possono contenere piú “token”.
Quando una transizione viene eseguita si toglie un “token” da
ciascun posto di ingresso e lo aggiunge a ciascun posto di uscita.
.
.
.. .
produttore
.
consumatori
Posti e transizioni
Al più tre processi possono leggere la memoria
contemporaneamente.
Mentre un processo scrive nessuno può leggere.
pronto a scrivere
.
.
3
scrittura
.. .
lettura
3
...
.
2 processi scrittori
4 processi lettori
Si aggiungono 3 token
pronto a leggere
Definizioni di base (1)
Una tripla N = (S, T, F) è chiamata rete se e solo se:
1) S e T sono insiemi disgiunti (gli elementi di S sono chiamati
S-elementi, gli elementi di T sono chiamati T-elementi)
2) F  (S  T)  (T  S) è una relazione binaria, chiamata la
relazione di flusso di N.
Graficamente S-elementi sono rappresentati come cerchi e Telementi come quadrati, la relazione di flusso è rappresentata
da archi orientati che connettono cerchi e quadrati
Notazione. Sia N = (S, T, F) una rete. Denotiamo le componenti
come SN, TN, FN e scriviamo anche N per S  T.
Sia N una rete. Per x  N
.x = { y | y F x} è chiamato il preset di x
N
.
x = { y | x FN y} è chiamato il postset di x
Per X  N sia .X =  x  X .x e X. =  x  X x. .
Definizioni di base (2)
Per x, y  N si ha x . y  y  x. .
Una coppia (s,t)  SN  TN è un self-loop
se e solo se s FN t and t FN s.
Una rete N è pura se FN non contiene self-loop.
Un elemento x  N è isolato se e solo se . x  x . = .
Una rete N è semplice se elementi distinti non hanno lo stesso
preset e postset, ossia se,
per ogni x, y  N, .x = .y and x. = y. => x = y.
Definizioni di base (3)
Esempio. Una rete semplice ma non pura che non contiene
elementi isolati.
Definizioni di base (4)
Siano N e N’ due reti.
Data una biiezione b : N  N’ chiamiamo N e N’ b-isomorfe se e
solo se s  SN  b(s)  SN ’ and x FN y  b(x) FN ’ b(y).
Questo implica tTN  b(t)  TN ’ .
Due reti N e N’ sono isomorfe se e solo se sono isomorfe per
qualche funzione b.
Rappresentazioni grafiche in cui gli elementi non hanno un nome
rappresentano reti a meno di isomorfismo.
Reti condizione-evento (1)
Gli S-elementi rappresentano condizioni e indichiamo con B il
loro insieme,
i T-elementi rappresentano eventi e indichiamo con E il loro
insieme.
L’insieme delle condizioni che valgono in una configurazione è
un caso.
Sia N = (B, E, F) una rete.
1) un sottoinsieme c  B è un caso
2) sia e  E e c  B; e ha una concessione in c (è c-abilitato) se
e solo se .e  c and e.  c =  (assenza di contatto)
3) sia e  E, sia c  B, e sia c-abilitato. Allora c’ = (c\.e)  e. è il
caso successore di c sotto e ( c’ risulta dall’occorrenza di e nel
caso c) e scriviamo c [e > c’.
Notazione. Nella rappresentazione grafica si indica che una
condizione vale ponendo una marca nel cerchio che la
rappresenta.
Reti condizione-evento (2)
Esempio.
.
primavera
inizio estate
estate
inizio autunno
inizio primavera
inverno
inizio inverno
autunno
Reti condizione-evento (3)
Eventi i cui preset e postset sono disgiunti possono essere
combinati in un passo.
Sia N = (B,E,F) una rete.
Un insieme di eventi G  E è distaccato (detached) se e solo se
per ogni e1, e2  G e1 differente da e2 => .e1 .e2 =  = e1.  e2. .
Siano c, c’ casi di N e sia G distaccato.
Allora g è un passo da c a c’, ossia c [G > c’ se e solo se ogni
evento e  G è abilitato e c’ = (c\.G)  G. .
Lemma. Sia N una rete, sia G  EN distaccato e siano c, c’ casi di
N. Allora c [G > c’  c\c’ = .G and c’\c = G. .
Reti condizione-evento (4)
Esempio.
b3
e1
e4
b5
.
e5
b1
e2
b2
e3
b4
Reti condizione-evento (5)
Esempio.
.
b3
e4
b5
e1
e5
b1
.
e2
b2
e3
b4
Reti condizione-evento (6)
Esempio.
b3
e4
.
b5
e1
e5
b1
e2
.
b2
e3
b4
Reti condizione-evento (7)
b1
e2
b3
b4
e3
e5
e4
b2
e1
b5
L’evento e1 può essere combinato in un passo sia con l’evento e2 che
con l’evento e3.
Reti condizione-evento (8)
b1
e2
.
b3
e5
b2
Caso b6
e1
b4
e3
b6
e4
b5
Reti condizione-evento (9)
.
b1
e5
e2
b3
b4
e3
.
b2
Passo e5
e4
e1
b5
Caso b1, b2
Reti condizione-evento (10)
.
b1
e2
b3
b4
e3
.
e5
b2
Passo e1, e2
e1
b5
Caso b3, b5
e4
Reti condizione-evento (11)
.
b1
e2
b3
b4
e3
.
e5
b2
Passo e3
e1
b5
Caso b4, b5
e4
Reti condizione-evento (12)
b1
e2
.
b3
b4
e3
e5
e4
b2
Passo e4
e1
Caso b6
b5
Reti condizione-evento (13)
.
b1
e5
e2
b3
b4
e3
.
b2
Passo e5
e4
e1
b5
Caso b1, b2
Reti condizione-evento (14)
.
b1
e5
e2
b3
b4
e3
.
b2
Passo e2
e4
e1
b5
Caso b2, b3
Reti condizione-evento (15)
.
b1
e2
b3
b4
e3
.
e5
b2
Passo e1, e3
e1
b5
Caso b4, b5
e4
Reti condizione-evento (16)
Un passo finito può essere realizzato con l’occorrenza dei suoi
eventi in un ordine arbitrario.
Lemma. Sia N una rete, c e c’ casi di N e G = {e1, …, en} un passo
finito da c a c’.
Se (e1, …, en) è un ordinamento arbitrario degli elementi di G allora ci
sono casi c0, …, cn tali che c = c0, c’ = cn
e
ci-1 [ei> ci,
(i = 1, …, n).
Reti condizione-evento (17)
Eventi che abbiano in comune pre o postcondizioni sono in conflitto.
In un caso come nell’esempio, in cui si può avere o non avere
conflitto, si ha confusione.
Si ha conflitto se e2 occorre prima di e1, ma non si ha conflitto se
e1 occorre prima di e2, ma tra le occorrenze di e1 e e2 non è
specificato alcun ordine.
.
e1
.
e3
e2
.
Reti condizione-evento (18)
e2 occorre prima di e1.
.
.
e1
Conflitto tra e1 e e3
e3
.
e2
e1 occorre prima di e2. Nessun conflitto
e1
e3
.
e2
.
Sistemi condizione-evento (1)
Un sistema condizione-evento consiste di una rete (B,E,F) e di un insieme
di casi C con le proprietà seguenti:
- Se un passo G  E è possibile in un caso c  C allora G porta a un caso
in C
- Se un caso c  C risulta da un passo G  E allora anche la
configurazione di partenza è un caso di C
- Tutti i casi di C possono essere trovati ragionando in avanti o
all’indietro
- C è tale che i) per ogni evento e  E c’è un caso in C in cui e ha una
concessione, ii) ogni condizione b  B appartiene ad almeno un caso di
C, ma non a tutti (cosí si escludono condizioni isolate e self-loop).
Si vogliono escludere anche eventi isolati perché si vuole che gli eventi
siano osservabili. Inoltre si chiede che due condizioni non abbiano lo
stesso preset e postset (non sarebbero distinguibili). Analogamente per
gli eventi.
Sistemi condizione-evento (2)
Una quadrupla S = (B,E,F,C) è un sistema condizione-evento
(sistema C/E) se e solo se:
1. (B,E,F) è una rete semplice senza elementi isolati.
2. C  (B) è una classe di equivalenza della relazione di
raggiungibilità RS = (rS  rS-1)*, dove rS  (B)  (B) è data da
c1 rS c2  $G  E c1 [G> c2 . C è la classe dei casi di S.
3. Per ogni e

E esiste c  C tale che e ha una concessione in C.
La classe dei casi di un sistema C/E S è completamente
determinato da un elemento arbitrario della classe.
Sistemi condizione-evento (3)
Esempio. La classe dei casi dell’esempio seguente è
{{b1},{b2},{b3},{b4}}.
b1
b3
.
b2
b4
Sistemi condizione-evento (4)
Lemma. Sia S un sistema C/E.
1. BS e ES e FS sono differenti da .
2. Per c  CS, c’ BS, G  ES
c [G > c’  c’  CS
c’[G > c  c’  CS.
3. Per ogni bBS , $ c,c’  CS con bc and bc’.
4. S è puro.
Sistemi ciclici e vivi (1)
Un sistema C/E è ciclico se e solo se per ogni c1,c2  CS c1 rS* c2 .
Proposizione.
Sia S un sistema C/E ciclico e sia c  CS . Allora CS = {c’ | c rS* c’}.
Un sistema C/E è vivo se e solo se per ogni c  CS e ogni e  ES
$ c’  CS tale che c rS* c’ e e è c’-abilitato.
Proposizione. Ogni sistema C/E ciclico è vivo.
Sistemi ciclici e vivi (2)
Osservazione. Non ogni sistema C/E vivo è ciclico.
.
.
.
.
.
.
.
.
.
.
.
.
Equivalenza di sistemi (1)
Siano S e S’ due sistemi C/E.
1.
Date biiezioni g: CS  CS’, e: ES  ES’, S e S’ sono (g,e)-equivalenti
se solo se per tutti i casi c1,c2  CS e tutti gli insiemi di eventi
G  ES c1 [G> c2  g(c1) [e(G)> g(c2), dove e(G) = {e(e) | e 
G}.
S e S’ sono equivalenti se solo se sono (g,e)-equivalenti per
qualche coppia di biiezioni (g,e).
2.
S e S’ sono isomorfi se e solo se le reti (BS,ES,FS) e (BS’,ES’,FS’)
sono b-isomorfe per qualche biiezione b e se
c  CS  {b(b)|bc}  CS’ .
Se S e S’ sono equivalenti scriviamo S ~ S’.
Proposizione. La relazione ~ è una relazione di equivalenza.
Equivalenza di sistemi (2)
Proposizione. Sistemi C/E equivalenti hanno lo stesso numero di casi,
eventi e passi. Possono avere un numero differente di condizioni.
Esempio. I casi sono {b1,b2}  primavera, {b1,b3}  estate,
{b2,b3}  autunno,   inverno
inizio primavera
inizio inverno
b2
.
.
b1
inizio
autunno
inizio
estate
b3
Esempio. I casi sono {b1,b2}  primavera, {b1,b3}  estate,
{b2,b3}  autunno,   inverno
primavera
.
estate
inverno
autunno
.
inizio primavera
inizio inverno
b2
.
b1
inizio
autunno
inizio
estate
b3
Esempio. I casi sono {b1,b2}  primavera, {b1,b3}  estate,
{b2,b3}  autunno,   inverno
.
primavera
inverno
autunno
inizio primavera
inizio inverno
b2
.
.
b1
estate
inizio
autunno
inizio
estate
b3
Esempio. I casi sono {b1,b2}  primavera, {b1,b3}  estate,
{b2,b3}  autunno,   inverno
primavera
estate
.
inverno
inizio primavera
autunno
inizio inverno
b2
.
.
b1
inizio
autunno
inizio
estate
b3
Esempio. I casi sono {b1,b2}  primavera, {b1,b3}  estate,
{b2,b3}  autunno,   inverno
primavera
inverno
estate
.
autunno
inizio primavera
b1
inizio inverno
b2
inizio
autunno
inizio
estate
b3
Equivalenza di sistemi (3)
Proposizione. Siano S e S’ due sistemi C/E equivalenti.
1. S è ciclico se solo se S’ è ciclico.
2. S è vivo se solo se S’ è vivo.
Lemma.
Siano S e S’ sistemi C/E tali che per ogni
c  CS  CS ’ |c| = 1.
S e S’ sono equivalenti se e solo se sono isomorfi.
Sistemi senza contatti (1)
Un sistema C/E può essere trasformato in uno equivalente senza
contatti.
Contatto: in un caso c,
.
.e
c
e e.  c  
.
Sia S un sistema C/E e siano b, b’ elementi di BS .
1.
2.
b’ è il complemento di b se e solo se .b = b’. and b. = .b’.
S è completo se ciascuna condizione b  BS ha un complemento
b’  BS .
Sistemi senza contatti (2)
Lemma. Sia S un sistema C/E e sia b
1.

BS .
b ha al piú un complemento b^.
Se b ha un complemento b^, allora
2. b^ ha un complemento b^^ e b^^ = b.
3. Per ogni c

CS
b  c oppure b^
Se S è completo allora
4. Per ogni e

ES |.e | = |e. |.
5. Per ogni c

CS | c | = 1/2 | BS |.

c.
Sistemi senza contatti (3)
Sia S un sistema C/E e sia B  BS l’insieme delle condizioni che non hanno
complemento in BS . Per ogni b  B, b^ denoti un nuovo elemento.
Sia F = {(e, b^) | (b,e)

FS e b  B}  {(b^, e) | (e, b)

FS and b  B}.
Per c  CS sia f (c) = c  {b^ | b  B and b  c}.
Allora il sistema C/E S^ = (BS  {b^ | b  B}, ES, FS  F, f(CS) ) è il
completamento di S e f(c) è il completamento di c.
Esempio. Una condizione e il suo complemento.
b
b^
Sistemi senza contatti (4)
Proposizione. Sia S un sistema C/E e c  CS . Vale
1. S^^ = S^
2. Per ogni b

BS , c
3. c = f(c)  BS .

CS b  f(c)  b^  f(c)
Sistemi senza contatti (4)
Lemma. La funzione f : CS  CS^ come definita sopra è biiettiva.
Notazione. Denotiamo con -e ed e- preset e postset di e in S^.
Proposizione. Sia S un sistema C/E, sia G  ES e B l’insieme delle
condizioni che non hanno complemento in BS. Vale:
1.
2.
-G
= .G  {b^ | b  B and b  G.},
G- = G.  {b^ | b  B and b  .G}
.G
= -G  BS ,
G. = G-  BS.
Sistemi senza contatti (5)
Esempio. Un sistema C/E S e il suo completamento S^.
.
.
.
.
*
*
.
*
.*
* elemento nuovo
.
.
*
.*
.
* elemento nuovo
.
.
*
*
Sistemi senza contatti (6)
Teorema. Se S^ è il complemento di un sistema C/E S, allora S^ è
equivalente a S.
Dimostrazione.
Bisogna dimostrare che per ogni c1, c2  CS , per ogni G  RS
c1 [G> c2  f(c1) [G> f(c2).
Un sistema C/E S è senza contatti se per ogni e
1. .e  c  e.  BS \c
2. e.  c  .e  BS \c
.

ES e ogni c  CS
Teorema.
1. Ogni sistema C/E completo è senza contatti.
2. Per ogni sistema C/E ce ne è uno equivalente senza contatti.
3. Se S è senza contatti allora per ogni e  ES
.e diverso da 
e. diverso da  .
Grafo dei casi (1)
Il grafo dei casi ha come nodi i casi e come archi i passi del sistema
C/E.
Sia S un sistema C/E, S l’insieme di tutti i passi di S,
P = {(c1, G, c2)  CS  S  CS | c1 [G> c2}.
Il grafo FS = (CS, P) è chiamato grafo dei casi di S.
Grafo dei casi (2)
b3
e1
.
b3
e1
.
e2
e3
e5
b4
e4
.
b3
e3
e5
b4
b5
b3
e1
e2
e3
b2
.
e5
b5
e2
e3
e3
b3
e1
b4
e2
b5
e1
e2
b2
e3
e4
b5
e2
e3
.
b4
{e1}
{e4}
e5
{b2,b3}
{e3}
{e2}
e5
b4
{e3,e4}
{b4,b3}
{e3}
{b4,b5}
{e4}
e3
e5
b4
e4
b5
b1
b2
{e5}
{b2,b5}
.
.
b3
.
.
b5
b1
b2
b1
e5
e4
e5
b4
e4
.
e1
b3
e2
b2
b1
b5
b1
b4
e4
.
e4
{b1}
b1
b2
.
.
b3
e1
e4
b1
b2
b5
e2
.
.
b3
b1
b2
e1
b5
b1
b2
e1
e4
e2
e3
e5
b4
Grafo dei casi (3)
Osservazione.
Non ogni grafo può essere interpretato come il grafo dei casi di un
sistema C/E.
e1
c2
c1
e2
c3
e2 è vivo se e solo se per ogni c  C e ogni
Teorema. Un sistema C/E
0
S
e  ES esiste un cammino in Fc4
con jn = {e}.
S c0 j1 c1 … jn cn
Teorema. Due sistemi C/E sono equivalenti se e solo se i loro grafi
di casi sono isomorfi.
Grafo dei casi (4)
Teorema. Un sistema C/E è ciclico se e solo se il suo grafo dei casi
è fortemente connesso.
Teorema. Sia S un sistema C/E, siano c1 ,c2 , c3  CS e G1 ,G2

ES .
1. Se c1 G1 c2 G2 c3 è un cammino in FS allora G1  G2 =  .
2. Sia G1  G2 = . Allora se c1 ( G1  G2) c3 è un arco in FS allora
esiste c  CS tale che c1 G1 c G2 c3 è un cammino in FS .
Processi di sistemi C/E (1)
Si vuole una descrizione che mostri cambiamenti di condizioni e
occorrenze di eventi anche concorrenti.
b3
e1
e4
.
b5
b1
e2
b2
e3
b3
e4
e5
b4
b5
e1
b1
e1
e5
b2
e3
b4
b3
b3
e2
b1
e1
e3
b1
b2
b2
b4
Processi di sistemi C/E (2)
Un T-elemento rappresenta l’occorrenza dell’evento denotato dalla sua
etichettatura.
T-elementi distinti con la stessa etichettatura denotano occorrenze
differenti del medesimo evento.
Un S-elemento s mostra con la sua iscrizione b che b è stata
soddisfatta dall’occorrenza di .s e ha cessato di valere con l’occorrenza
di s..
I conflitti sono stati risolti e tutti gli S-elementi non hanno
diramazioni.
Processi di sistemi C/E (3)
Una relazione binaria r  A  A su un insieme A è una relazione di
similarità se e solo se
1. Per ogni a  A: a r a
(r è riflessiva)
2. Per ogni a,b  A: a r b = b r a (r è simmetrica)
Un sottoinsieme B  A è una regione di una relazione di similarità r
se e solo se
1. Per ogni a,b  B:
a r b (r è full su B)
2. Per ogni a  A: a  B  $ b  B: not (a r b)
(B è un sottoinsieme massimale su cui r è full)
Proposizione. Sia A un insieme e r  A  A una relazione di
similarità.
1. Ogni elemento di A appartiene ad almeno una regione di r.
2. Regioni di un insieme non vuoto A sono non vuote e nessuna
regione è un sottoinsieme proprio di un’altra regione.
3. Se r è una relazione di equivalenza allora le regioni di r sono
esattamente le classi di equivalenza di r.
Processi di sistemi C/E (4)
Notazione. Una relazione di similarità finita su un insieme A può
essere rappresentata in modo unico come un grafo non orientato, di
cui A è l’insieme dei nodi e K = {(a,b) | a  b  a r b} è l’insieme degli
archi.
2
3
1
4
6
7
7
5
La regioni sono {1,2,4}, {2,3,4,6}, {4,5}, {7}.
Sia A un insieme parzialmente ordinato:
1. li  A  A è tale che a li b  a < b  b < a  a = b.
2. co  A  A è tale che a co b  (not a li b)  a = b
(ossia a co b  not (a < b  b < a).
Processi di sistemi C/E (5)
Sia A un insieme parzialmente ordinato e siano a,b  A :
1. a li b  a co b.
2. a li b  a co b  a = b.
Teorema. Per un qualsiasi insieme parzialmente ordinato A, li e co
sono relazioni di similarità.
Esempio.
1
2
3
5
4
6
7
La regioni di li sono {1,2,5,6,7}, {1,2,3}, {4,6,7}.
Le regioni di co sono {3,7}, {3,6}, {3,4,5}, {1,4}, {2,4}.
Processi di sistemi C/E (6)
Sia A un insieme parzialmente ordinato e sia B  A:
1. B è una linea se e solo se B è una regione di li.
2. B è un taglio se e solo se B è una regione di co.
Sia A un insieme parzialmente ordinato e siano B, C  A.
1. A è limitato (bounded) se e solo se esiste n  N tale che per
ogni linea L di A |L|  n.
2. B precede C (scritto B  C) se e solo se per ogni b  B e per
ogni c  C b < c or b co c
( scriviamo B < C per B  C and B  C)
3. B- = {a  A | {a}  B},
B+ = {a  A | B  {a}}.
4. oB = {b  B | per ogni b’  B, b co b’  b < b’},
Bo = {b  B | per ogni b’  B, b co b’  b’ < b}.
oB è l’insieme degli elementi minimali di B e Bo è l’insieme degli
elementi massimali di B.
Processi di sistemi C/E (7)
Teorema. Se A è un insieme parzialmente ordinato limitato
allora oA e Ao sono tagli.
Proposizione. Sia A un insieme parzialmente ordinato, sia L una linea
e sia D un taglio di A. Allora |L  D|  1.
Un insieme parzialmente ordinato è K-denso se ogni linea ha
un’intersezione non vuota con ogni taglio.
Esempio. Un insieme che è parzialmente ordinato ma non K-denso.
Infatti {3,2}  {1,4} = .
1
3
2
4
Processi di sistemi C/E (8)
Una rete K = (SK , TK, FK) è una rete di occorrenze se e solo se:
1. Per ogni a, b  K: a (FK+) b   b (FK+) a (K è senza cicli)
2. Per ogni s  SK : |.s|  1  |s.|  1 (gli S-elementi non hanno
diramazioni)
Proposizione. Sia K una rete di occorrenze.
La relazione <, definita da a < b  a (FK+) b, per ogni a, b  K, è un
ordine parziale su K.
Processi di sistemi C/E (9)
Segue che per una rete di occorrenze sono definite linee, tagli,
limitatezza, K-densità.
Dato un insieme parzialmente ordinato, sia L una linea e sia D un
taglio di A. Allora |L  D|  1.
Una slice di una rete di occorrenze K è un taglio contenente solo Selementi.
Denotiamo sl(K) l’insieme delle slice di K.
Esempio.
(s3,t2,s4,t3,s6) è una linea, (t1,s4,s5) è un taglio, (s1,s3) è una slice.
s1
t1
s2
s4
s3
t3
t2
s5
s6
Processi di sistemi C/E (10)
Teorema. Ogni rete di occorrenze non vuota e limitata è K-densa.
Esempio.
Una rete di occorrenze non limitata che non è K-densa. Infatti la linea
{s0,t1,s1, …} e il taglio {s1’,s2’,…} hanno intersezione vuota.
s1’
s2’
s3’
…
s0
t1
s1
t2
s2
t3’
Processi di sistemi C/E (11)
Descriviamo i processi come funzioni da reti di occorrenze limitate a
sistemi C/E senza contatti soddisfacenti due richieste:
1. Ogni slice corrisponde a in un caso
2. La corrispondenza di un T-elemento rispetta l’ambiente dell’evento.
Sia K una rete di occorrenze limitata e S un sistema C/E senza
contatti. Una funzione p: K  S è un processo di S se e solo se per ogni
slice D di K e ogni t  TK :
1.
p|D è iniettiva e p(D)  CS
2.
p(.t) = . p(t)  p(t.) = p(t).
Nelle rappresentazioni grafiche di processi p: K  S ogni elemento x di
K è etichettato dalla sua immagine p(x). Ogni linea rappresenta una
successione di elementi casualmente dipendenti (sottoprocesso
sequenziale), un taglio è un’istantanea (snapshot) del processo.
La K-densità garantisce che ogni sottoprocesso sequenziale è
rappresentato in ogni snapshot.
Processi di sistemi C/E (12)
Teorema. Per ogni processo p: K  S :
1. p(SK)  BS  p(TK)  ES (il tipo degli elementi e’ preservato).
2. Per ogni x,y  K, x FK y  p(x) FS p(y) (p rispetta la relazione di
flusso)
3. Per ogni x, y  K, p(x) = p(y)  x li y (eventi e condizioni non sono
concorrenti con loro stessi).
4. Per ogni t  TK , .t   and t.   (eventi hanno prerequisiti e
conseguenze).
5. Per ogni taglio D di K p|D è iniettiva.
Perche’ sistemi C/E senza contatti
.
b1
.
e1
.
.
e2
.
b1
.
b3
b2
b1
e1
b2
?
e1
b2^
.
.
e2
b3
b2
b1
e1
b2^
b2
e2
b3
b2
e2
b3
b2
Processi di sistemi C/E (13)
Teorema. Sia p: K  S un processo, sia T  TK tale che per ogni
t1, t2  T, t1 co t2. Allora $ c1,c2  CS tali che c1 [p(T)> c2.
Due processi p1: K1  S , p2: K2  S di un sistema C/E S sono
isomorfi se e solo se K1 è b-isomorfo a K2 e per ogni x  K1
p1(x) = p2(b(x)).
Teorema. Siano S1 e S2 due sistemi C/E senza contatti e sia pi
l’insieme dei processi di Si (i=1,2). Allora p1 = p2  S1 = S2.
Processi di sistemi C/E (14)
Lemma. Se p: K  S è un processo oK e Ko sono slice di K.
Lemma. Siano pi: Ki  S (i=1,2) due processi con p1(K1o) = p2(oK2).
Allora esiste, a meno di isomorfismo, esattamente una rete di
occorrenze K con una slice D e un processo p: K  S tale che
p|D- = p1 e p|D+ = p2.
Siano p, p1, p2 come sopra. Allora p è la composizione di p1 e p2,
(p = p1 o p2).
b2
b2
b1
b3
o
b5
b2
b5
b3
b3
b1
Proposizione. Siano b4
S1 e S2 due sistemi C/E senza
contatti b4
e sia pi
b4
l’insieme dei processi di Si (i=1,2). Allora p1 = p2  S1 = S2.
Processi di sistemi C/E (15)
Un processo è elementare se descrive un passo singolo. I processi sono
decomponibili in un numero finito di processi elementari.
Un processo p: K  S è elementare se solo se SK = oK

Ko .
Proposizione.
1. p: K  S è un processo elementare se e solo se
p(oK) [p(TK) > p(Ko) è un passo di S.
2. Se p: K  S è elementare allora per ogni t1,t2  TK t1 co t2.
Processi di sistemi C/E (16)
Un processo è vuoto se e solo se TK = .
Proposizione.
1. Ogni processo vuoto è elementare.
2. Se p’ è un processo vuoto ed è definito p o p’ (oppure p’ o p) allora
p = p o p’ (oppure p = p’o p).
Teorema.
Se p: K  S è un processo, allora esiste un numero finito di processi
elementari p1, …, pn tali che p = p1 o …o pn.
Processi e grafi dei casi (1)
Processi elementari corrispondono ad archi in grafi dei casi. Piú
cammini in un grafo dei casi possono corrispondere allo stesso
processo.
Lemma. Sia S un sistema C/E senza contatti.
Allora p: K  S è un processo elementare se e solo se c’è un arco
v = (c1, G, c2) in FS tale che p(oK) = c1, p(Ko ) = c2, p(TK) = G.
Sia S un sistema senza contatti.
1. Se v è un arco in FS, allora v denota il processo corrispondente a v.
v è il processo di v, v è l’arco di v .
2. Siano v1, …, vn archi e sia w = v1 … vn un cammino in FS. Allora
w = v1 o … o vn è il processo di w e w è un cammino di w.
Processi e grafi dei casi (2)
Esempio
1,4
1
a
2
b
3
1,5
2,4
2,5
1,6
2,6
1
c
5
d
3,4
3,5
6
3,6
Per ciascun cammino di un grafo dei casi c’è esattamente un processo
corrispondente; a un singolo processo possono corrispondere piú
cammini.
Processi e grafi dei casi (3)
Sia S un sistema C/E, siano c1,c2,c3  CS e G1,G2  ES .
1. Se u1 = (c1, G1, c2), u2 = (c1, G2, c3), v = (c1, G1  G2, c3) sono
archi in FS, il cammino u1 u2 è una decomposizione di v, v è una
unificazione di u1 u2.
2. Dati cammini w, w’, w’ è una permutazione di w se e solo se esistono
cammini u1, …, u4 tali che w = u1 u2 u3, w’ = u1 u4 u3 e u4 è una
decomposizione o una unificazione di u2.
3. Dati cammini w1, …, wn in FS, (w1, …, wn) è una sequenza di
permutazione se e solo se per ogni i = 1, …, n-1, wi+1 è una
permutazione di wi.
Processi e grafi dei casi (4)
Proposizione.
Sia S un sistema C/E senza contatti, siano c1, c2, c3  CS e siano
G1, G2  ES disgiunti e non vuoti.
1.
Se v = c1 (G1 G2) c2 è un arco in FS, allora esiste una
decomposizione di v della forma c1 G1 c G2 c2, per un qualche c

CS .
2. Siano u1 = c1 G1 c3 e u2 = c3 G2 c2 archi in FS e sia u1 o u2 : K  S .
Allora per ogni t1, t2  TK: t1 co t2 se e solo se c1 (G1  G2) c2 è un
arco in FS .
Reti posto-transizione (1)
Esempio. Un sistema produttore-consumatore con limitata capacità di
buffer, multipla generazione e multiplo consumo di token, limitato
accesso al buffer, un contatore dei token prodotti.
.
contatore
K=w
.....
K=1
K=1
buffer
3
...
..
2
K=5
K=1
produttore
K=2
consumatore
K=2
Reti posto-transizione (2)
Una sestupla N = (S,T,F,K,M,W) è una rete P/T se e solo se :
1.
(S, T, F) è una rete finita, gli elementi di S sono i posti, gli
elementi di T sono le transizioni.
2. K : S  N
 {w}
dà la capacità di ciascun posto.
3. W : F  N \ {0} dà un peso a ciascun arco della rete.
4. M : S  N
ogni s  S.
 {w}
è la marcatura iniziale tale che M(s)  K(s) per
Reti posto-transizione (3)
Denotiamo le componenti di una rete P/T N con SN, TN, FN, KN, MN, WN .
Sia N una rete P/T.
1. Una funzione M : SN  N  {w } è una marcatura di N se e solo
se M(s)  K(s).
2. Data una marcatura M, una transizione tTN è M-abilitata se e solo se
per ogni s. t M(s) ≥ WN (s,t) e per ogni s  t. M(s) + WN (t,s)  KN (s).
3. Una transizione M-abilitata tTN può dare una marcatura successiva
M’ di M che per ogni s è:
M(s) - WN (s,t) se e solo se s  .t \ t .
M(s) + WN (t,s) se e solo se s  t. \ .t
M(s) - WN (s,t) + WN (t,s) se e solo se s  . t  t .
M(s) altrimenti.
Diciamo che t porta da M a M’ e scriviamo M[t> M’.
4. Sia [M > il piú piccolo insieme di marcature tale che
M  [M > e, se M1  M e per qualche t  TN M1 [t> M2 allora M2  [M>.
Reti posto-transizione (3)
1. Rete abilitata (si omettono: 1 sugli archi, w sui posti)
....
3
2
.
.
2. Reti non abilitate
2
..
2
..
3
4
3
3
..
2
..
2
3. Selfloop non abilitate
3
3
.
.
... 3
.
Reti posto-transizione (4)
Una marcatura di una rete P/T ha un contatto per una transizione t
 TN se t non è M-abilitata solo perché i posti in to non hanno la
capacità sufficiente.
Una rete P/T N è senza contatti (contact-free) se e solo se per
ogni M  [MN> e per ogni t  TN
se  s  . t M(s)  WN (s,t) allora  s  t . KN (s) - WN (t,s)  M(s)
Reti posto-transizione (5)
Costruzione della rete completata:
Data una rete P/T N la corrispondente rete N’ è ottenuta
aggiungendo nuovi posti e nuovi archi. Per ogni posto s di N
aggiungiamo un nuovo posto s e per tutti gli archi (t,s) e (s,t) di FN
aggiungiamo nuovi archi (s,t) e (t, s), rispettivamente, tali che WN’
(s,t) = WN (t,s) e WN’ (t,s) = WN (s,t).
Assumiamo la capacità KN’ (s) = KN (s).
Per i nuovi posti s la marcatura iniziale MN’ (s) = KN (s) - MN (s).
La rete risultante è senza contatti: per ogni marcatura
raggiungibile M si ha MN’ (s) + MN’ (s) = KN’ (s).
Date marcature M di N e M’ di N’ ogni transizione t è M-abilitata in
N se e solo se è M’-abilitata in N’.
Inoltre si possono sostituire tutte le capacità finite KN (s)  N in N’
con w senza cambiare il comportamento di N’.
Reti posto-transizione (6)
Complementazione di una rete
2
3
K=5
..
K=5
2
1
..
2
1
3
...
3
K=5
1
.
Rappresentazione in algebra lineare (1)
Sia N = (S,T,F,K,M,W) una rete P/T.
Per una transizione t  T, sia il vettore t : S  Z definito come:
t (s) = W(t,s)
se e solo se s  t. \ .t
t (s) = -W(s,t)
se e solo se s  . t \ t .
t (s) = W(t,s) - W(s,t) se e solo se s  . t
t (s) = 0
altrimenti

t.
Sia la matrice N: S  T  Z definita come N(s,t) = t (s).
Ogni marcatura può essere rappresentata da un vettore.
Rappresentazione in algebra lineare (2)
t1
t2
s1
1
-1
s2
-1
1
s3
1
s4
3
s5
t3
t5
marcatura
1
5
-2
1
3
-1
1
s6
s7
t4
-1
-1
2
1
contatore
s3
K=w
s1
.....
.
K=1
t1
s7
K=1
t5
buffer
t2
s2
K=1
produttore
3
...
s4
K=5
2
..
t3
s5
t4
K=2
consumatore
s6
K=2
Rappresentazione in algebra lineare (3)
La rappresentazione è non ambigua solo per reti pure.
In questo caso possono essere derivate le componenti. Se si chiede
anche che N sia senza contatti il comportamento di N è pienamente
determinato dalla matrice N e dal vettore MN.
Corollario. Sia N una rete P/T e M, M’: SN  N  {w} due marcature
di N. Allora per ogni transizione t  TN
1.
Se t è M-abilitato allora M [t> M’  M + t = M’
Se N è pura, allora anche :
2. t è M-abilitata  0  M + t  KN
3. N è senza contatti  M  [MN> : (0  M + t  M + t  KN ).
Rappresentazione in algebra lineare (4)
Per reti con capacità infinita vale la seguente proprietà di
monotonicità.
Lemma. Sia N una rete P/T con s  SN : KN (s) = w.
Siano M1, M2: SN  N  {w} due marcature di N. Si ha
1.
M1 [t> M  M1+ M2 [t> M + M2
2. M  [M1>  M + M2  [M1 + M2>
Grafo di copertura (1)
Idea: rappresentare le (infinite) marcature raggiungibili mediante
un grafo finito. I nodi del grafo rappresentano o “coprono” le
marcature raggiungibili.
Assumiamo senza perdere generalità KN (s) = w per ogni s  SN.
Ogni nodo E del grafo di copertura deve essere pensato come una
marcatura della rete; alcuni nodi lo saranno, altri ricopriranno
marcature raggiungibili.
Vediamo come nascono sequenze infinite di marcature raggiungibili.
Supponiamo M, M’ raggiungibili e M’  [M>. Supponiamo che per ogni
posto s sia M(s)  M’(s) e M  M’ (scriviamo M < M’) e che KN (s) = w
in tutti i posti dove M’(s) > M(s).
Allora ogni transizione abilitata in M è anche abilitata in M’ e
ripetendo la catena di transizioni che ha portato da M a M’
otteniamo una nuova marcatura M” con M’ < M”.
Grafo di copertura (2)
Iterando si ha una sequenza di marcature distinte Mi, i = 1,2, …, con la
proprietà che
Mi(s)=M(s) se M’(s)=M(s), mentre
Mi+1(s)>Mi(s) se M’(s)>M(s).
La sequenza sarà rappresentata nel grafo da un nodo di copertura H
con H(s)=M(s) se M’(s)=M(s)
e H(s) = w se il numero di token su s è crescente.
Grafo di copertura (3)
Sia N una rete P/T con capacità infinite e sia G = G0, G1 , … la sequenza
di grafi che soddisfa le richieste seguenti:
1.
G0 = ({MN}, )
2. Sia Gi = (H, P). Sia E  H e sia t  TN tale che
(a) t è E-abilitata
(b) nessun arco da E è t-iscritto, ossia $ E’ tale che (E,t,E’)  P.
Allora definiamo la marcatura E~, per ogni s  SN,
con E~(s) = w se esiste un nodo E’ in H tale che E’  E + t e
E’(s) < E(s) + t(s) ed esiste un cammino da E’ a E in Gi,
E~(s) = E(s) + t (s) altrimenti,
e sia Gi+1 = (H {E~}, P  {(E,t, E~ )}).
Grafo di copertura (4)
3. Se non è possibile costruire Gi+1 seguendo 2 allora si ha Gi+1 = Gi.
G è detta sequenza di copertura e G = (  Hi,  Pi) è il grafo di
copertura generato da G.
Si noti che nella costruzione la marcatura può essere già contenuta in
H, essendo un nodo di Gi. In questo caso in Gi+1 è aggiunto un nuovo
arco (E,t, E~, ), ma non un nuovo nodo.
Grafo di copertura (5)
Esempio. Si abbia la rete
s1
a
.
s2
c
d
b
s3
La rete ha due grafi di copertura (gli indici sugli archi denotano
l’ordine di generazione)
001
b
100
7
a
a 1
b
d 8
010
c
2
c
3
01w
c 5
d
4
0ww
100
d
6
6
001
1
d 2
a
010
4
c
3
c
0ww
d
5
Grafo di copertura (6)
Ogni marcatura raggiungibile è coperta da un nodo del grafo di
copertura.
Lemma. Sia G un grafo di copertura di una rete P/T N.
Per ogni sequenza MN [t1> M1 … Mn-1 [tn> Mn esiste un cammino E0 t1E1 …
En-1tnEn in G tale che MN = E0 e per ogni i = 1, …, n Mi  Ei .
Sia N una rete P/T e E: SN  N  {w}. Sia E un nodo di G.
1. Sia (E)={s SN|E(s)=w}
2. Per i N una marcatura M di N è una i-marcatura se e solo se
s  (E) M(s)  i e s  (E) M(s) = E(s)
3. Sia ME[MN> un insieme minimale tale che per ogni i  N esiste
una i-marcatura M di E in ME. Allora ME è chiamato insieme di
copertura di E.
Grafo di copertura (7)
Lemma.
Sia G un grafo di copertura di una rete P/T N.
Per ogni E di G esiste un insieme di copertura ME.
Teorema
Ogni grafo di copertura di una rete P/T è finito.
Grafo di copertura (8)
s2
s2
a
s1
a
c
.
s3
s1
.
1w0
0w1
100
001
c
s3
Le due reti hanno lo stesso grafo di copertura.
Non mostra che in N1 la transizione c può essere eseguita un numero
qualsiasi di volte (indipendentemente da a).
Dimostrazione di proprietà con i grafi di
copertura (1)
Teorema
Sia N una rete P/T, M: SN  N  {w} una marcatura arbitraria e
G un grafo di copertura di N.
Una marcatura M’  [MN> con MM’ esiste se e solo se
1. per ogni s  SN, M(s) = w => MN(s) = w
2. esiste un nodo E in G tale che M  E.
Prova. Se MN(s)  w allora per ogni M’  [MN> si ha M’ (s)  w.
Sia M’  [MN>, dato che esiste un nodo di G tale che M’  E,
allora anche anche M  E.
Facilmente si vede il viceversa.
Dimostrazione di proprietà con i grafi di
copertura (2)
Sia N una rete P/T, S  SN . L’insieme di posti S è simultaneamente
illimitato se per ogni i  N esiste Mi  [MN> tale che per ogni s  S
Mi (s)  i.
Teorema
Sia N una rete P/T, S  SN e G un grafo di copertura di N. Allora S
è simultaneamente illimitato se e solo se esiste un nodo E in G tale
che ogni s  S E(s) = w.
Dimostrazione di proprietà con i grafi di
copertura (3)
Sia N una rete P/T, M: SN  N  {w} una marcatura arbitraria e
sia t  TN . La transizione t è M-morta se per ogni M’  [MN> t non è
M’-abilitata.
Teorema
Sia N una rete P/T, t  TN e G un grafo di copertura di N. Allora t è
MN-morta se solo se non esiste un arco (E,t,E’) in G.
Teorema
Sia N una rete P/T, t  TN e G un grafo di copertura di N. Allora
l’insieme [MN> di marcature raggiungibili è finito se e solo se nessun
nodo di G ha una componente w.
Proprietà di “Liveness” (1)
In rappresentazioni di sistemi mediante reti, gli elementi attivi
(processori, agenti, ...) sono rappresentati come transizioni, gli
elementi passivi (buffer, memorie, ...) come posti e gli elementi
assegnabili come token.
Situazioni di blocco sono viste come transizioni che non possono piú
essere eseguite.
Queste reti non sono “vive”.
Sia N una rete P/T, sia t  TN
1.
t è viva se e solo se per ogni M  [MN> esiste M’ [M> tale che
t e’ M’-abilitata.
2. N è viva se e solo se per ogni t  TN, t è viva.
Proprietà di “Liveness” (2)
Non è vero che aggiungendo token alla marcatura iniziale di una
rete viva si ottiene ancora una rete viva.
Questa rete è viva.
.
.
.
Proprietà di “Liveness”
.
.
.
Proprietà di “Liveness”
.
.
.
Proprietà di “Liveness”
.
.
.
Proprietà di “Liveness”
.
.
.
Proprietà di “Liveness”
Non è vero che aggiungendo token alla marcatura iniziale di una
rete viva si ottiene ancora una rete viva. Questa rete non è viva.
.
.
.
.
Proprietà di “Liveness”
.
.
..
Grafo di copertura (9)
E` stato dimostrato che esiste una successione di reti di Petri
con dimensioni linearmente crescenti tali che i corrispondenti
grafi di copertura crescono rispetto al numero dei nodi piú
velocemente di una qualsiasi funzione ricorsiva primitiva. Si ha
di conseguenza che prese due reti P/T N, N’ con SN = SN’ è
decidibile, ma non in tempo o spazio ricorsivo primitivo se
[MN>  [MN> o se [MN> = [MN>.
Problema della raggiungibilità
Teorema. Data rete rete P/T N e una marcatura arbitraria M
è decidibile se M [MN>.
Invarianti di rete (1)
Proprietà di una rete P/T possono essere studiate individuando
insiemi di posti che non cambiano il loro conteggio di token durante
lo sparo delle transizioni. Tali insiemi di posti sono chiamati Sinvarianti e sono caratterizzati come soluzioni di sistemi di
equazioni lineari calcolabili con metodi dell’algebra lineare.
Esempio.
t1
s2
t2
s3
s5
s1
t5
t3
s4
t4
Invarianti di rete (2)
Consideriamo una rete P/T N con peso degli archi 1. Vogliamo
caratterizzare l’insieme dei posti S  SN tale che non cambia il
conteggio totale dei token quando le transizioni sparano. Se S è un
.
tale insieme di posti e s  S allora per ciascuna transizione t  s
.
che può essere abilitata ci deve essere un posto s’  t che è
contenuto in S (intuitivamente un token fluisce lungo gli archi (s,t)
.
e (t,s’) da s a s’). Analogamente per ogni transizione t  s che può
.
essere abilitata ci deve essere un posto s’  t tale che un token
fluisce lungo (s’,t) e (t,s) da s’ a s. Cosí S può essere caratterizzato
da un insieme F di archi che soddisfa le richieste seguenti:
1) quando un arco appartenente a F parte o termina in un posto s
allora tutti gli archi da e a s appartengono a F
2) per ciascun arco di F che termina in qualche transizione t c’è
esattamente un arco appartenente a F che parte in t.
Nell’esempio il conteggio dei token è costante per {s1,s2,s4,s5} e
per {s1, s3, s4}.
Invarianti di rete (3)
Il metodo non funziona se ci sono pesi degli archi maggiori di 1.
In questo caso se il conteggio su S  SN non cambia quando spara
una transizione t  TN allora Ss . tSW(s,t) = Ss t . SW(t,s) che
equivale a Ss.tS t(s) = - Sst.S t(s) e anche a
Ss.tS t(s) + Ss t.S t(s) = 0
e anche a
Ss (. t t.) S t(s) = 0 e a SsS t(s) = 0. Se sostituiamo S con il
suo vettore caratteristico cS abbiamo SsS t(s) . cS(s) = 0 o anche
t . cS = 0.
N
Se il conteggio su S  SN non cambia sotto sparo di transizioni
arbitrarie la condizione t . cS = 0 deve essere soddisfatta per
tutte le transizioni ti  TN e quindi deve valere N’. cS = 0 con N’ la
trasposta di N. Viceversa ogni soluzione c di N’. x = 0 è vettore
caratteristico di un insieme di posti con conteggio costante.
Invarianti di rete (4)
Data una rete P/T N un vettore i: SN  Z è un S-invariante di N
se N’. i = 0.
Lemma. Se i1, i2 sono S-invarianti di una rete N e m  Z anche
m . i1 e i1 + i2 sono S-invarianti di N.
Invarianti di rete (5)
Esempio
s1
t1 t2 t3 t4 t5
-1
-1
1
s2
1
s3
1
-1
1
s4
s5
i1
1
-1
1 -1
1
1
i3
2
i4
1
1
1
1
1
1
1
-1
i2
1
1
2
1
1
1
Invarianti di rete (6)
I vettori i1 e i2 sono vettori caratteristici e il fatto che siano Sinvarianti è interpretato che gli insiemi di posti {s1, s3, s4} e
{s1, s2, s4, s5} hanno un conteggio dei token costante.
Possiamo dare un’interpretazione anche alle soluzioni che non
sono vettori caratteristici. Il vettore i3 ci dice che un token su
s1 conta quanto un token su s2 e un token su s3. Similmente un
token su s4 conta quanto un token su s3 e un token su s5.
I token su s1 e s4 hanno un peso doppio rispetto ai token su s2.
S3e s5. Se consideriamo questi pesi abbiamo conteggi di token
pesati che rimangono costanti durante gli spari della rete.
Invarianti di rete (7)
Siano M1 e M2 due marcature della rete dell’esempio e sia t una
transizione tale che M1 [t> M2. Allora
2M1(s1) + 2M1(s4) + M1(s2) + M1(s3) + M1(s5) =
2M2(s1) + 2M2(s4) + M2(s2) + M2(s3) + M2(s5)
Con l’invariante i3
M1 . i3 = M2 . i3
Gli insiemi di posti con conteggio costante dei token sono
ottenuti da insiemi di archi che portano da un posto in .t a un
posto in t. . Si ha il lemma seguente.
Lemma. Sia N una rete P/T con un S-invariante positivo i e sia
S = {s  SN | i(s) > 0}. Allora .S = S..
Invarianti di rete (8)
Teorema. Sia N una rete P/T. Allora, per ciascun invariante i di N
e ciascuna marcatura raggiungibile M  [MN>, M . i = MN . i.
Prova. Siano M1, M2  [MN> e tTN tale che M1[t>M2.
Allora M1 = M2 + t e t . i = 0 perché i è un invariante. Perciò
M2 . i = (M1 + t ) . i = M1 . i.
L’inverso del teorema assume che ogni transizione possa sparare
almeno una volta, e quindi è vero in particolare per reti vive.
Teorema. Sia N una rete P/T viva e sia i: SN  Z un vettore di
posti tale che, per ogni M  [MN>, M . i = MN . i. Allora I è un Sinvariante.
Invarianti di rete (9)
Una rete P/T è coperta da S-invarianti se per ciascun posto s  SN
esiste un S-invariante positivo i di N con i(s) > 0.
Corollario. Se una rete P/T è coperta da S-invarianti esiste un
invariante i con i(s) > 0 per ogni s  SN .
Prova. Dal fatto che la somma degli invarianti è un invariante.
Una rete P/T è limitata se e solo se MN è finita ed esiste un n  N
tale che, per ogni M  [MN> e s  SN , n  M(s).
Teorema. Sia N una rete P/T e MN sia finita. Se N è coperta da
S-invarianti allora N è limitata.
Verifica di proprietà con gli S-invarianti (1)
Esempio. Supponiamo che a n processi in un sistema operativo sia
consentito l’accesso a un buffer in lettura e scrittura. Quando
nessun processo scrive nel buffer fino a n processi possono leggere,
ma l’accesso al buffer per scrivere è consentito a un processo fin
quando nessun altro processo sta leggendo o scrivendo nel buffer.
s5
k
s4
s2
t5
t4
s3
t3
t2
k
t1
t0
s1
Verifica di proprietà con gli S-invarianti (2)
Ogni processo è in uno di cinque stati rappresentati dai posti
s0: processi inattivi, s1: processi pronti a leggere, s2: processi che
leggono, s3: processi pronti a scrivere, s4: processi che scrivono, s5:
sincronizzazione. Nello stato iniziale tutti i processi sono inattivi,
quindi in s0 contiene n token. Il posto s5 contiene k token, quanti
sono i processi che possono leggere nel buffer concorrentemente.
Quando siano state eventualmente effettuate fino a k letture fino a
n processi possono scrivere nel buffer
Verifica di proprietà con gli S-invarianti (3)
t0
s0
-1
s1
1
s2
t1
t2
t3
1
-1
t5
i1
1
1
-1
1
-1
1
1
s4
-1
i2
MN
n
1
s3
s5
t4
1
-1
1
1
1
-1
-k
k
1
k
1
k
Verifica di proprietà con gli S-invarianti (4)
Usando l’invariante i1 abbiamo per ciascuna marcatura M  [MN>
S 4  i  0 M(si) = S 4 i  0 MN (si) = n
Ossia il numero dei processi rimane costante e ogni processo è in
uno degli stati s0, s1, s2, s3, s4.
Usando l’invariante i2 abbiamo per ciascuna marcatura M  [MN>
M(s2) + k.M(s4) + M(s5) = MN (s2) + k.MN (s4) + MN(s5) = k
Quindi s4 contiene al piú un token sotto M, ossia un solo processo
può scrivere. Quando s4 ha un token s2 e s5 sono vuoti, ossia
nessun processo può leggere il buffer. Il posto s2 ha al più k
token, ossia al più k processi leggono concorrentemente (questo
avviene quando M(s4)=0.
Si può anche vedere che la rete è viva.
Scarica

Document