ESERCIZI
Esercizio A.
Studiare una delle seguenti relazioni comportamentali
- 2-nested simulation (testo pag. 70)
- Branching bisimulation (testo, pag. 64)
In particolare, studiare:
- le proprietà di preordine o di equivalenza
- la relazione con la bisimulation equivalence
- le proprietà di congruenza
e, facoltativamente:
- una possibile caratterizzazione logica (nello stile del teorema di Hennessy-Milner)
- una possibile caratterizzazione come gioco
Esercizio B.
Dimostrare che la codifica del CCS con value passing nel CCS puro
è vista a lezione corretta e completa rispetto alla semantica
operazionale.
Esercizio C.
Dimostrare che la trace equivalence è una congruenza per il CCS.
Esercizio D.
Siano T e T' due LTS e si assuma che esista un
morfismo f : T → T' tra i due LTS visti come grafi con
archi etichettati. Discutere la relazione esistente tra le
proprietà di f e le proprietà di bisimulazione.
Esercizio E.
Indichiamo con ai = a. ... a. 0, ovvero una
sequenza di i azioni a. Sia
inoltre Aω = a. Aω.
Dimostrare che i processi
Σi ai
e
Aω + Σi ai
soddisfano le stesse formule della logica HML, ma non sono bisimili.
E se si considera la logica con ricorsione?
Esercizio F.
Mostrare che la codifica di uno degli operatory Inv, Pos, Safe, Even,
Until (strong o weak) nel mu-calcolo cattura la proprietà intesa, ad
es. che
[[ Even(φ) ]] = { P | per ogni computazione completa P = P0 → P1 → P2 → ... esiste i tale che Pi |= φ }.
Esercizio G.
Mostrare che la semantica della logica di Hennessy-Milner vista a
lezione è ben definita, ovvero che quando si considerano minimi e
massimi punti fissi, le funzioni corrispondenti sono monotone su di un
reticolo. Discutere se e come potrebbe essere inclusa la negazione
nella logica..
Esercizio H.
Discutere la relazione esistente tra la congruenza osservazionale e la massima congruenza contenuta nella bisimilarità debole.
Esercizio I.
Dimostrare che la semantica [[P]]η di una formula HML è indipendente dal valore che η associa a variabili non libere in P.
Esercizio L.
Discutere una estensione del CCS con un operatore di composizione
sequenziale tra processi P; Q. Dare una semantica
operazionale e analizzare la possibilità di avere una
codificare in CCS dell'operatore definito.
Esercizio M.
Dimostrare nel pi-calcolo i seguenti due fatti:
- Se a ∉ fn(P) allora (ν a) P ≡ P
- Se P ≡ Q allora fn(P)=fn(Q)
Esercizio N.
Definire la bisimulazione debole (≈) nel pi-calcolo. Definire tre
processi True(l), False(l), Test(l,P,Q) del pi-calcolo
monadico senza operatore di scelta, tali che valgano le seguenti equivalenze:
(ν l) (True(l) | Test(l,P,Q)) ≈ P e
(ν l) (False(l) | Test(l,P,Q)) ≈ Q. Dimostrare una di
queste due equivalenze.
Esercizio O.
Dimostrare che nel pi-calcolo l'operatore di restrizione preserva la
bisimulazione forte, cioe' se P ∼ Q allora (ν a) P
∼ (ν a) Q
MINI-PROGETTI
Modellare in CCS uno dei seguenti algoritmi o protocolli e provarne la
correttezza (si veda il Cap. 7 del libro).
- Uno dei problemi degli algoritmi di mutua esclusione nei capitoli
5, 6 o 7 del libro The Little Book of Semaphores di
Allen B. Downey.
- Alternating bit protocol (si veda il link
su Wikipedia
o
su Answers oppure qui).
- Il protocollo Carrier-Sense Multiple Access with Collision Detection (si veda, CSMA/CD, che contiene anche un riferimento ad un lavoro strettamente collegato).
- Bounded retransmission protocol (si veda qui).
- Prisoner's game
- Dijkstra's concurrent programming control problem (mutual exclusion for 3 processes) - si veda questo articolo
Una ulteriore alternativa è la seguente:
- Studio del Mobility Workbench (si veda in particolare il lavoro che descrive il tool), con implementazione di esempi visti a lezione.
APPROFONDIMENTI
- Caratterizzazione della bisimilarità e del model checking come gioco (si veda il lavoro di Colin Stirling e il libro a pag. 115).
- Algoritmi di decisione per la bisimulazione (Kannelakis e Smolka, Paige e Tarjan) - si veda qui.
- Bisimulazione, coinduzione: una visione storica (si veda l'articolo di Davide Sangiorgi).
- Timed CCS / Timed Automata / Timed bisimulation
(libro)
- Un approccio, proposto da Leifer e Milner, per la derivazione automatica di bisimulazioni che sono congruenze [articolo]
- Pict: un linguaggio di programmazione basato sul pi-calcolo.
- Dal pi-calcolo a Java e viceversa
[Articolo
1
+ Articolo
2]
- Formalizzazione di web-services [Articolo]
- Altri calcoli formali:
- Spi-calcolo, un calcolo per l'analisi di protocolli crittografici [Articolo]
- Ambient-calcolo, un calcolo per descrivere sistemi con
mobilità (computazione su dispositivi mobili e codice mobile)
[Articolo]
e la corrispondente logica spaziale
[Articolo]
- CCS reversibile per systems biology [Articolo]