Linguaggio formale utile a raccogliere delle specifiche, utili in contesti in cui la sicurezza è fondamentale e per descrivere sistemi concorrenti.
Esistono diverse estensioni delle reti di Petri "classiche", come quelle temporizzate
Grafo bipartito, composto da posti e transizioni sui vertici e flussi sugli archi. Ad ogni posto è assegnato un certo numero di token, il posizionamento dei token ne determina il suo stato complessivo.
Una quintupla
-
$P$ : posti -
$T$ : transizioni -
$F$ : flussi -
$W$ : funzione peso -
$M_0$ : marcatura iniziale
Proprietà:
$P \cap T = \emptyset$ $P \cup T \neq \emptyset$ $F \subseteq (P \times T) \cup (T \times P)$ $W: F \rightarrow \mathbb{N} \textbackslash 0$ $M_0 : P \rightarrow \mathbb{N}$
Definizioni:
-
preset:
$Pre(a) = d \in (P \cup T) <d,a> \in F$ : insieme degli elementi in ingresso ad un certo elemento$a$ -
postset:
$Post(a) = d \in (P \cup T) <a, d> \in F$ : insieme degli elementi in uscita da un certo elemento$a$ -
transizione abilitata:
$M [ t >$ quando$\forall p \in Pre(t), M(p) \geq W(<p,t>)$ - scatto: porta da marcatura
$M$ a marcatura$M'$ :$M[t> M'$
Relazioni:
-
sequenza (tra due transizioni): due transizioni possono scattare strettamente una dopo l'altra
$$M[t_1> \land \ \neg M[t_2> \land \ M[t_1 t_2>$$ -
conflitto strutturale (tra due transizioni): hanno posti in ingresso in comune
$$Pre(t_1) \cap Pre(t_2) \neq \emptyset$$ -
conflitto effettivo (tra due transizioni): sono entrambe abilitate, ma il posto in ingresso in comune non ha abbastanza gettone per farle scattare entrambe
$$M[t_1> \land \ M[t_2> \ \land \exists p \in Pre(t_1) \cap Pre(t_2), M(p) < W(<p,t_1>) + W(<p, t_2>)$$ -
concorrenza strutturale (tra due transizioni): non hanno posti in ingresso in comune
$$Pre(t_1) \cap Pre(t_2) = \emptyset$$ -
concorrenza effettiva (tra due transizioni): tutti i posti che hanno in comune hanno un numero di token sufficiente a farle scattare entrambe
$$M[t_1> \land \ M[t_2> \land \ \forall p \in Pre(t_1) \cap Pre(t_2), M(p) \geq W(<p,t_1>) + W(<p,t_2>)$$
Insieme di raggiungibilità di una rete
$M \in R(P/T, M)$ $M' \in R(P/T, M) \land \exists t \in T, M'[t> M'' \Longrightarrow M'' \in R(P/T, M)$
Non esistono posti che, a partire dalla marcatura iniziale, possono raggiungere un numero infinito di token
Una transizione
- di grado 0 (morta): non è abilitata in nessuna marcatura appartenente all'insieme di raggiungibilità, quindi la transizione non potrà mai scattare
$$\nexists M' \in R(P/T, M) \ | \ M'[t>$$ - di grado 1: esiste almeno una marcatura appartenente all'insieme di raggiungibilità in cui la transizione è abilitata, quindi si può raggiungere una situazione in cui la transizione può scattare
$$\exists M' \in R(P/T, M) \ | \ M'[t>$$ - di grado 2: per ogni
$n$ (numero naturale escluso lo zero), esiste una sequenza di scatti ammissibile a partire da$M$ in cui la transizione scatta$n$ volte, quindi è possibile far scattare la transizione un numero $n$ di volte$$\forall n \in \mathbb{N} \ \textbackslash {0}, \exists M[\dots t^1 \dots t^2 \dots t^n>$$ - di grado 3: esiste una sequenza di scatti ammissibile a partire da
$M$ per cui la transizione scatta infinite volte, quindi è possibile far scattare la transizione infinite volte$$\forall n \in \mathbb{N} \ \textbackslash {0}, \exists M[\dots t^1 \dots t^2 \dots t^\infty>$$ - di grado 4 (viva): in qualunque marcatura raggiungibile esiste una sequenza di scatti ammissibile in cui è possibile far scattare la transizione almeno una volta, quindi la transizione può scatta infinite volte in qualunque situazione ci si trovi
$$\forall M' \in R(P/T, M), \exists M'' \in R(P/T, M'), M''[t>$$
È possibile definire un dialetto delle reti di Petri tale che alcuni posti hanno una capacità limitata. È anche possibile trasformare questa rete in una rete classica, aggiungendo dei posti complementari. Questa proprietà vale solo per le reti pure, ovvero che per ogni transizione hanno preset e postset disgiunti
Un posto complementare è un posto avente in uscita vero ognuna delle transizioni del posto considerato un arco di ugual peso ma di direzione opposta
Un arco inibitore collega un posto ad una transizione che ha bisogno che NON siano presenti gettoni nel posto per renderla abilitata
Per ogni rete avente pesi sugli archi, è possibile crearne una equivalente senza pesi sugli archi (tutti gli archi di peso 1). Queste reti possono essere viste come reti
Una rete è strettamente conservativa quando per qualsiasi marcatura raggiungibile, la somma dei gettoni è sempre la stessa:
Una marcatura