Communication Errors in the π -Calculus are Undecidable Vasco T. Vasconcelos Department of Informatics Faculty of Sciences, University of Lisbon Ant´ onio Ravara Department of Mathematics Lisbon Institute of Technology Keywords: concurrency, programming calculi, program correctness Abstract 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 with respect to the notion of error, but, in general, not complete. The notions of communication errors are usually undecidable, and this makes the type approach relevant. For the polyadic π-calculus [8] this is also the case. Herein we show that the notion of communication errors in the polyadic π-calculus is unde- cidable. The proof follows a general pattern of undecidability results [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 ·from λ-terms into π- terms, and show that the decidability of ‘M Err’ implies the decidability of ‘M ’, from which we conclude immediately that ‘M Err’ is undecidable. An alternative proof—reducing the halting problem of Turing machines to our problem—would involve first the encoding of Turing machines in the π-calculus. 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, 8]. Assume a countable set of names a, b, p, q, u, v, x, and let ˜ v stand for a sequence of names, and ˜ x for a sequence of pairwise distinct names. Definition 1 (Processes). The set of processes is given by the following grammar. P ::= av] | ax).P | P | Q | νxP | ! ax).P | 0 An input prefixed process ax).P receives a sequence of values ˜ v along a and becomes the process P where names in ˜ v replace names in ˜ x in P . An output process av] sends the sequence of names ˜ v along a. 0 is the terminated process, P | Q is the parallel composition of processes, and νxP restricts the scope of the name x to the process P . Process ! ax).P is a persistent input prefixed process. We abbreviate to νx 1 ··· x n P a process νx 1 ··· νx n P , and consider that the operator ‘ν ’ binds tighter than the operator ‘|’. 1