- Up to now, we have considered non-deterministic processes - Two main features are missing for modeling a concurrent system: - Simultaneous execution of processes - Inter-process interaction - Solutions adopted: - Parallel composition, with interleaving semantics - Producer/consumer paradigm Given a set of names N (that denote events) - a (∈ N) denotes consumption of event a - $\bar{a}$ (for a ∈ N) denotes production of event a - a and $\bar{a}$ are complementary actions: they let two parallel processes synchronize on the event a When two processes synchronize, an external observer has no way of understanding what is happening in the system - synchronization is not observable from the outside; it produces a special ‘silent’ action, that we denote with τ The set of actions we shall consider is: ![150](images/Pasted%20image%2020250414102733.png) It is also useful to force some processes of the system to synchronize between them (without the possibility of showing to the outside some actions) The restriction operator P\a restricts the scope of name a to process P (a is visible only from within P) This is similar to local variables in a procedure of an imperative program ![](images/Pasted%20image%2020250414103800.png) ![](images/Pasted%20image%2020250414104010.png) fino alla 7 compresa...