Given a synchronous system, we study the question whether -or, under which conditionsthe behaviour of that system can be realized by a (non-trivially) distributed and hence asynchronous implementation. In this paper, we partially answer this question by examining the role of causality for the implementation of synchrony in two fundamental different formalisms of concurrency, Petri nets and the π-calculus. For both formalisms it turns out that each 'good' encoding of synchronous interactions using just asynchronous interactions introduces causal dependencies in the translation.
IntroductionSynchronous and asynchronous interactions are the two basic paradigms of interactions in distributed systems. While synchronous interactions are widely used in specification languages, asynchronous interactions are often better suited to implement real systems. It would be desirable -from a programming standpoint -to design systems in a synchronous fashion, yet reap the benefits of parallelism by means of an (ideally automatically generated) implementation executed on multiple processing units in parallel, between which only asynchronous communication is possible. Thus, we are interested in the conditions under which synchronous interactions can be implemented using just asynchronous interactions, while maximizing the degree of distribution. To partially answer this question, we examine the role of causality for encoding synchrony. We formalize and study this problem by means of Petri nets (see Section 2) as well as the π-calculus (see Section 3), as synchronous and asynchronous interactions have already been studied in both models to quite some extent.Petri nets and the π-calculus are two fundamentally different models for reactive systems. However, certain basic phenomena show up in both in at least similar ways. Three of them play a crucial role for our investigation. A reactive system exhibits its behaviour by executing various actions. Studying the possible behaviour of a system, two action occurrences must be related in one of three ways: there can either be a choice between the two, one of the two can be causally dependent on the other, or the two can be entirely independent. † This work was supported by the DFG (German Research Foundation), grants NE-1505/2-1 and GO-671/6-1. If there is a choice between two behaviours, the system can only exhibit one. If multiple copies of the same system would be started though, they could each choose a different alternative.In Petri nets, choice is represented by conflict, i.e. by two transitions sharing a common preplace and competing for tokens such that each transition can fire separately but not both at the same time. The processing of conflicts in Petri nets is inherently synchronous, in particular multiple conflicts transitively connecting an arbitrary number of transitions will always be decided consistently.In the π-calculus, choice can be implemented directly via the choice operator or indirectly by offering multiple matching outputs for a single input or vice versa. The choi...