HIDING

Un'altro combinatore che internalizza le azioni, ma agendo in modo differente dalla restrizione, è l'hiding. Dato un processo P, supponiamo di voler "nascondere" le azioni indicate nell'insieme L, cioè vogliamo che esse siano rese invisibili ad ogni osservatore esterno al sistema. Allora con $ \: P/L \:$ (P hiding L) qualsiasi $ \alpha \in L$ diventa un'azione interna $ \tau$.

Questo operatore statico è essenziale per ridurre la complessità di sistemi molto grandi perché è possibile minimizzarne la dimensione rimuovendo le azioni interne ottenute con l'hiding. In genere viene applicato a processi composti e le sue regole di transizione sono:

$\displaystyle \renewcommand {\arraystretch}{1.2}
\begin{array}{c}E \stackrel{\...
... \stackrel{\tau}{\longrightarrow} E' / L
\end{array} \quad
(\alpha \in \: L) $

Un esempio semplice per l'utilizzo di questo operatore è il seguente:

$\displaystyle \textsc{User} \stackrel{{def}}{{=}}(acquire.use.release.\textsc{User})/use $

Il processo User esegue in sequenza le azioni $ acquire$, $ \tau$ e $ release$ (si è nascosto $ use$) e con una minimizzazione successiva si trova la semplice sequenza $ acquire$-$ release$.

Si osserva che, mentre la restrizione preserva il determinismo, non accade altrettanto per l'hiding. Questo avviene perché se un processo deterministico ha già una $ \tau$-derivazione, con l'hiding se ne può inserire un'altra che crea un cammino differente. Ad esempio in $ \: P \stackrel{{def}}{{=}}
(\tau.\beta.P+\alpha.\gamma.P) \:$ se aggiungiamo $ /\alpha$, una stessa azione silente iniziale porta a due computazioni diverse (non determinismo).

Esempio Bill-Ben 7: Quando abbiamo visto il parallelismo $ \textsc{Bill} \parallel \textsc{Ben}$, l'azione finale $ meet$ era visibile. Un modo per renderla interna è quello di aggiungere l'operatore $ /meet$ e quindi l'ultima azione sarà $ \tau$.

Morpheus 2004-02-10