* Simboli:
- sqcap: ⊓
- box: □
- a\b: a̱
- Vert: ‖
- $\underrightarrow{a}$ (toggle latex fragment): $\underrightarrow{a}$
* 1.1 Petri Nets
** Definizione
Petri net N: 4-tuple.
| N =
- P = {p| p is a place} (state variables)
- T = {t| t is a transition} (change of states)
- → (Flow function) ⊂ P×T ∪ T×P
- W: Flow → N⁺
Visualizzabile come grafo bipartito.
** Altra definizione
Posso sostituire → e W con due vettori ∈ Nᴾˣᵀ
| N =
- Pre: funzione P×T → N; rappresenta gli input delle transizioni
| Pre(p,t) = W(p,t) if (p,t)∈→ else 0
- Post: funzione P×T → N
| Post(p,t) = W(t,p) if (t,p)∈→ else 0
Da Pre e Post posso generare la matrice di incidenza C
| C: P×T → Z
| C = Post - Pre
** Marking di una rete
Definiamo Marking m (vettore ∈ Nᴾ) la funzione
| m: P → N
| m(p) = n: ci sono n token nel posto p
** Sistema P/N
Un sistema P/N S e` dato da una rete di Petri e il suo stato iniziale
(marking m₀)
| S =
| Stato composito: unione degli stati dei singoli posti
L'evoluzione del sistema e` determinata dallo scattare delle
transizioni.
Una transizione puo` scattare quando:
| ∀p, m(p) ≥ W(p,t) ∧ (p,t) ∈ →
| m ≥ Pre[-,t]
Possiamo calcolare il nuovo marking m' allo scattare di una
transizione t come:
| m' = m + C[-,t]
| m' = m - Pre[-,t] + Post[-,t]
| ∀p, m'(p) = m(p) - W(p,t) + W(t,p)
Si scrive:
| m[t>m'
Posso definire postset e preset di una transizione o posto come:
| •t = {p∈P| (p,t) ∈ →} (preset di t, ovvero al posto di • p)
| •p = {t∈T| (t,p) ∈ →} (postset di t, ovvero al posto di • t)
| t• = {p∈P| (t,p) ∈ →} (preset di p, ovvero al posto di • p)
| p• = {t∈T| (p,t) ∈ →} (postset di p, ovvero al posto di • t)
| ∀p∈•t, m(p) ≥ W(p,t) → t e` abilitata
** Sequenza di scatti
La sequenza di scatti σ nella marcatura m e`definita come:
| σ = [t₁, t₂, ..., tₙ], tᵢ∈T
Scriviamo
| m[σ>m' if ∃{m₁, m₂, ..., mₙ}: ∀i ∃mᵢ| mᵢ₋₁[tᵢ>mᵢ
Possiamo dire (state equation):
| ∃σ| m[σm' → m' = m + C•σ (integrale di C su sequenza σ)
| ∃σ| m[σm' ↚ m' = m + C•σ (m non permette di eseguire σ)
** Linguaggio di un sistema P/N
Un linguaggio L(S) di un sistema P/N e` definito come:
| L(S) = {σ| σ valido per S in m₀}
** Reachability Set
Il Reachability Set RS(S) e` definito come:
| RS(S) = {m: ∃σ∈L(S)| m₀[σm}
Il Reachability Graph RG e` generato usando come nodi i vari marking,
e come archi le transizioni che collegano un marking al precedente.
*** Proprieta` di RS e RG
- Boundedness:
definito il bound di un place come
| bound(p) = max {m(p)| m∈RS(S)}
| ∀p∈P, bound(p) < ∞
- Liveness:
ogni transizione puo` essere eseguita infinite volte
| ∀t∈T: ∀m∈RS(S) ∃σ| m[σ>m' ∧ m'[t>
- Reversible:
da ogni marcatura si puo` tornare alla marcatura iniziale
| ∀m∈RS(S), ∃σ| m[σ>m₀
- Home state:
un marking m e` detto home state quando
| ∀m'∈RS(S), ∃σ| m'[σ>m
** Step Semantic
Step s: multiset di transizioni
s e` abilitato in m se: m ≥ Pre • s
| m' = m + C•s
La sequenza di scatti sigma e` ridefinita usando s
*** Enabling degree
Numero di volte che una transizione puo` scattare in parallelo
eₜ(m) = max {k∈N⁺ | m≥ k•Pre[-,t]}
* 1.2 Reti di Petri colorate
Una rete di petri colorata e` definita come:
| N =
- C e` l'insieme dei colori
- cd: P∪T → C (definisce il dominio di colore dei posti e transizioni)
- Pre[p,t], Post[p,t]: cd(t) → bag(cd(p))
Una transizione e` abilitata quando in ogni transizione del
preset i token di colore cd(p) hanno molteplicita` ≥ Pre[p,t](c)
| ∀p∈•t, cd(p) ≥ Pre[p,t](c)
| m ≥ Pre[-,t](c)
* 1.3 Tecniche Strutturali
** Flussi
Definiamo p-flow come un vettore:
| y: P → Q | y.C = 0
Definiamo t-flow come un vettore:
| x: T → Q | C.x = 0
quando non negativi: p-semiflusso e t-semiflusso
Definiamo il supporto come:
| ||y|| = {p∈P | y(p) > 0}
| ||x|| = {t∈T | x(t) > 0}
La rete si dice conservativa quando:
| ∃y | ||y|| = P
La rete si dice consistente quando:
| ∃x | ||x|| = T
I flussi sono canonici quando il gcd degli elementi non nulli e` 1.
Un insieme generatore Ψ_y e` un insieme del numero minimo di
p-semiflussi, detti minimi, tali che e` possibile generare gli altri sommandoli
moltiplicati per un k
| ∀y: y = ∑ⱼ kⱼyⱼ, kⱼ∈Q, yⱼ∈Ψ
** Invarianti
Legge di conservazione dei token:
| ∀m: ∀p ∑ₚ y(p)m(p) = ∑ₚy(p)m₀(p)
| ∀m: ym = ym₀
Legge del comportamente ciclico:
| ∃m₀, ∃σ∈L(S) | mₒ[σ>m₀ ∧ σ=x
* 2.1 Algebra dei Processi
Descrizione astratta di sistemi concorrenti e non deterministici.
Si focalizza sulle transizioni eseguite piu` che sugli stati raggiunti.
** CCS: Calculus of Communicating Systems
- A, B, C: agenti
- a, b, c: azioni
- a̱, ḇ, c̱: co-azioni
- τ: azione silente (τ=τ̱)
Grammatica:
| E := nil | (E) | a.E | E + E' | E‖E' | E\L | E[f]
** CSP: Communicating Sequential Processes
Due primitive: eventi (azioni) e processi.
| P := STOP | skip | a → P | P + Q | P ⊓ Q | P □ Q | P ‖ₛ Q | E / a
A lezione abbiamo visto:
| P := nil | a.P | P + Q | P ‖ₛ Q | E / a
** Structural Operational Semantics
*** Prefixing (assioma)
———————
a.E $\underrightarrow{a}$ E
*** Mixed Choice
Composizione non deterministica con scelte miste:
ogni azione, τ inclusa sono offerte all'ambiente (solo le azioni
visibili possono essere controllate).
E $\underrightarrow{\mu}$ E'
——————————
E + F $\underrightarrow{\mu}$ E'
F $\underrightarrow{\mu}$ F'
——————————
E + F $\underrightarrow{\mu}$ F'
*** Internal Choice
Due assiomi che mostrano che il sistema puo` evolvere in uno dei sottocomponenti.
——————————
E ⊓ F $\underrightarrow{\tau}$ E'
——————————
E ⊓ F $\underrightarrow{\tau}$ F'
*** External Choice
Come nel caso delle scelte miste, ma nel caso di un'operazione silente
le sottocomponenti non vengono scartate.
E $\underrightarrow{\mu}$ E'
—————————— (μ ≠ τ)
E □ F $\underrightarrow{\mu}$ E'
F $\underrightarrow{\mu}$ F'
—————————— (μ ≠ τ)
E □ F $\underrightarrow{\mu}$ F'
E $\underrightarrow{\tau}$ E'
——————————————
E □ F $\underrightarrow{\tau}$ E' □ F
F $\underrightarrow{\tau}$ F'
—————————————–
E □ F $\underrightarrow{\tau}$ E □ F'
*** Evoluzione Indipendente
E $\underrightarrow{\mu}$ E'
—————————————–
E ‖ F $\underrightarrow{\mu}$ E' ‖ F
F $\underrightarrow{\mu}$ F'
————————————––
E ‖ F $\underrightarrow{\mu}$ E ‖ F'
*** Evoluzione con sincronizzazione
E $\underrightarrow{a} E'
F $\underrightarrow{\underline{a}}$ F'
————————————–––(a≠τ) (CCS)
E ‖ F $\underrightarrow{\tau}$ E' ‖ F'
E $\underrightarrow{a}$ E'
F $\underrightarrow{a}$ F'
————————————–––($a\in{S}$) (CSP)
E ‖ₛ F $\underrightarrow{\tau}$ E' ‖ₛ F'
*** Restrizione (CCS)
E $\underrightarrow{\mu}$ E'
—————————–(μ,μ̱ ∉ R)
E\R $\underrightarrow{\mu}$ E'\R
*** Relabeling (CCS)
E $\underrightarrow{a}$ E'
————————————
E[f] $\underrightarrow{f[a]}$ E'[f]
*** Hiding (CSP)
E $\underrightarrow{\mu}$ E'
—————————–(μ ∉ S)
E\S $\underrightarrow{\mu}$ E'\S
E $\underrightarrow{\mu}$ E'
—————————–(μ ∈ S)
E\S $\underrightarrow{\tau}$ E'\S