# Analisi delle proprieta' in CTL, da rete di petri ## Descrizione della rete PT La rete e' stata inizialmente modellata come una CPN per semplicita'. *(figura)* Successivamente e' stato effettuato un *unfolding* della rete ottenendo cosi' una rete PT che potesse essere analizzata utilizzando CTL. I posti rilevanti sono i seguenti: * P1,Q1 rappresentano l'attesa per la sezione critica da parte dei processi P,Q. * *turn* rappresenta la variabile turno: nella rete CPN era utilizzata la classe di colori *Turn = {p,q}*, che e' poi stata convertita durante l'unfolding nei posti *turn_p, turn_q* * P2\_p, Q2\_q rappresentano la SC per P e per Q. ## Analisi delle proprieta' con CTL 1. **Mutua esclusione**: Per la mutua esclusione si richiede che non vi siano contemporaneamente entrambi i processi all'interno della sezione critica. Se esiste un caso in cui questo e' vero, allora la proprieta` non e' rispettata. Query CTL: *(greatspn)* ``` !EF (#P2_p > 0 && #Q2_q > 0) ``` La query e' valutata True. 2. **Assenza di deadlock**: Possiamo definire l'assenza di deadlock come il caso in cui un processo riesca ad accedere alla sezione critica quando qualunque dei processi ne faccia richiesta. Per questo dobbiamo supporre che i processi siano forzati ad avanzare anche quando al di fuori della sezione critica. La query utilizzata e' la seguente: ``` AG ((#P1 > 0 || #Q1 > 0) -> AF (#P2_p > 0 || #Q2_q > 0)) ``` La query e' valutata True. 3. **Assenza di starvation individuale**: L'assenza di starvation presuppone che se un processo richieda l'accesso alla sezione criticaprima o poi questo possa farlo. La query utilizzata e' la seguente: ``` AG ((#P1 > 0 -> EF(#P2_p > 0)) && (#Q1 > 0 -> EF (#Q2_q > 0))) ``` La query e' valutata True.