Errors in the π-Calculus are Undecidable

We present an undecidability proof of the notion of communication errors in the polyadic π-calculus. The demonstration follows a general pattern of undecidability proofs – reducing a well-known undecidable problem to the problem in question. We make use of an encoding of the λ-calculus into the π-calculus to show that the decidability of communication errors would solve the problem of deciding whether a lambda term has a normal form. Introduction. The detection of communication errors in process calculi is crucial to ensure the safety of concurrent programs, i.e., the absence of run-time errors. The usual approach is to develop a type system, which is sound w.r.t. the notion of error, but, in general, not complete. The notions of communication errors are usually undecidable, what makes the type approach relevant. For the polyadic π-calculus [7] there is a strong believe that it is also the case. Hereby we show that the notion of communication error in the polyadic π-calculus is undecidable. The proof follows a general pattern of undecidability proofs [4]: we reduce the problem of deciding whether a lambda term has a normal form [5] to the problem of deciding whether a process is an error. More precisely, we define a computable function p·q from λ-terms into π-terms, and show that the decidability of ‘pMq ∈ Err’ implies the decidability of ‘M ↓’, for which we conclude immediately that ‘pMq ∈ Err’ is undecidable. This result, although not surprising, is up to the authors’ knowledge, original. It shows an important application of the encodings of the λ-calculus into the π-calculus – the transference of results. It also shows that only by indirect means one can statically detect possible run-time errors in concurrent programs, for example, by using type systems. The asynchronous (polyadic) π-calculus. We briefly present the asynchronous (polyadic) π-calculus [3, 6]. Consider a countable set of names a, b, v, x, and let ṽ stand for a sequence of names and x̃ for a sequence of pairwise distinct names. Definition 1. The set of processes is given by the following grammar. P ::= a[ṽ] | a(x̃).P | P | Q | νxP | ! a(x̃).P | 0 An input prefixed process a(x̃).P receives a sequence of values ṽ along a and becomes P [ṽ/x̃] (that is only defined when the sequences x̃ and ṽ have the same length). An output prefixed ∗Corresponding author email: amar@math.ist.utl.pt