Finora abbiamo parlato di azioni ed operatori ai quali non è associato alcun valore. Ci siamo infatti riferiti al calcolo di base per modellare sistemi concorrenti. Esiste però la possibilità di utilizzare calcoli con Value-Passing nei quali, oltre alla pura sincronizzazione, si esprime la comunicazione di valori di qualsiasi tipo; infatti questo tipo di calcolo tramite opportuni accorgimenti può essere ricondotto al calcolo base.
Per semplificare lo studio, assumiamo che tutti i valori appartengono ad un fissato insieme V che può contenere qualunque tipo di elementi. L'esempio più immediato che si può fare è il seguente:
tale cheLe derivazioni di questo sistema saranno le seguenti:
Se l'insieme V è finito, allora si può tradurre qualunque processo in uno descritto con il calcolo senza Value-Passing. Nell'esempio sopra basta dare la possibilità a P di scegliere uno qualunque degli elementi di V da prendere in input e questo si fa utilizzando la seguente sommatoria:
Nel caso visto sopra la variabile è associata ad un'azione
visibile (
non può riferirsi a nessun valore), ma essa
può anche essere collegata ad un processo. La forma generica
può essere tradotta nel seguente insieme
di definizioni del calcolo di base:
t.c.
Altri operatori che subiscono modifiche in questa traduzione sono
la restrizione e il relabelling. Nel primo caso l'insieme di
restrizione L diventa
V
;
la funzione di relabelling f è modificata in modo che
.
| COUNTDOWN(x) |
|
|
| COUNTDOWN(0) |
|
|
| COUNTDOWN |
|
|
| COUNTDOWN |
|
|
| COUNTDOWN |
|
|
| COUNTDOWN |
|
|
Morpheus 2004-02-10