We introduce a new CSP operator for modeling scenarios characterised by partial or optional parallelism. We provide examples of such scenarios and sketch the semantics of our operator. Relevant properties are proven.
MotivationCSP was introduced more than 20 years ago [4,1,5] and remains a popular means of specifying communicating sequential processes. A fundamental assumption is that, under parallelism, all processes engaging in an event have to do so jointly [10,9]. In particular, the generalized parallel operator in indexed form, X n i=1 L i , requires that if one of the processes L i , i = 1 . . . n, is ready to engage in an event in X, then it cannot proceed until all the other processes are ready to engage in that same event.However, circumstances often arise where this requirement constrains the expressive capacity of CSP from a practical modeling perspective. For example, suppose that the L i processes above represent "listener" or "reader" processes, using a channel c to acquire information in the alphabet X ⊆ α(c) from some other "announcer" process, A.In practice, at any given moment a subset of listener processes may not be ready to act, when the rest are. Moreover, the context often requires that processing progresses, rather than waits for all processes to reach a ready state. Wireless sensor networks [2] are but one of many possible contexts. Here, the announcer could be a sensor node wanting to pass on information to all live surrounding nodes, bypassing those which might have become inactive because their power has run out.The CSP specification A X ( X n i=1 L i ) does not adequately model this scenario. It insists that all processes have to engage jointly in events in X. In this example, all the listener processes will have to be in the form c?x → L i , and the announcing process will have to be in the form c!x → A before any interaction can occur. This obligation to act jointly (e.g. listen or read) characterises all existing CSP parallel operators, whether synchronized, alphabetized or general.In some contexts, using the interleaving operator may ameliorate the problem sketched above. For example,L i ) means that when any L i is in the form c?x → L i and A is in the form c!x → L , then an interaction can take place. At best, then, such interleaving leads to an approximate specification, since only one of possibly several ready L i processes is non-deterministically chosen for interaction with A. (Note, however, that this form could express a supervisor-worker pattern: supervisor A successively communicates a sequence of independent subtasks to any available worker L i .)An alternative operator for modelling scenarios similar to the announcer-listener pattern or the reader part of the reader-writer pattern would evidently be of pragmatic value. It will be seen that if our new operator conjoins one or more processes (e.g. listeners or readers), then any one or more of these processes may synchronize with their environment. Since, synchronization is neither mandatory over all conjoined p...