Programming in the Pi-Calculus

Pict is a programming language in the ML tradition, formed by adding high-level derived forms and a powerful static type system to a tiny core language. The core, Milner’s pi-calculus, is becoming popular as a theoretical foundation for a broad class of concurrent computations. The goal in Pict is to identify and support idioms that arise naturally when these primitives are used to build working programs — idioms such as basic data structures, protocols for returning results, higherorder programming, selective communication, and concurrent objects. The type system integrates a number of features found in recent work on theoretical foundations for typed object-oriented languages: higher-order polymorphism, simple recursive types, subtyping, and a useful partial type inference algorithm. This is a tutorial introduction to Pict, with examples and exercises.

[1]  A. Church The calculi of lambda-conversion , 1941 .

[2]  Gérard Boudol,et al.  Asynchrony and the Pi-calculus , 1992 .

[3]  Oscar Nierstrasz,et al.  Formalizing Composable Software Systems — A Research Agenda , 1997 .

[4]  Michael Papathomas A Unifying Framework for Process Calculus Semantics of Concurrent Object-Based Languages and Feature , 1991 .

[5]  Markus Lumpe,et al.  Modelling Objects in PICT , 1996 .

[6]  Patrick Varone,et al.  Implementation of `Generic Synchronization Policies' in Pict , 1996 .

[7]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[8]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[9]  Benjamin C. Pierce,et al.  Concurrent Objects in a Process Calculus , 1994, Theory and Practice of Parallel Programming.

[10]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[11]  Robin Milner,et al.  Definition of standard ML , 1990 .

[12]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[13]  Mario Tokoro,et al.  An Object Calculus for Asynchronous Communication , 1991, ECOOP.

[14]  John McCarthy,et al.  History of LISP , 1978, SIGP.

[15]  Benjamin C. Pierce,et al.  Decoding Choice Encodings , 1999 .

[16]  Davide Sangiorgi,et al.  Typing and subtyping for mobile processes , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[17]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[18]  Oscar Nierstrasz,et al.  Towards and Object Calculus , 1991, Object-Based Concurrent Computing.

[19]  Brian Vinter,et al.  RMoX: A Raw-Metal occam Experiment , 2003 .

[20]  Marc Stiegler Emily: A High Performance Language for Enabling Secure Cooperation , 2007, Fifth International Conference on Creating, Connecting and Collaborating through Computing (C5 '07).

[21]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[22]  Oscar Nierstrasz,et al.  Towards an Object Calculus ∗ , 1991 .

[23]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[24]  Benjamin C. Pierce,et al.  Pict: a programming language based on the Pi-Calculus , 2000, Proof, Language, and Interaction.

[25]  David A. Wagner,et al.  A Security Analysis of the Combex DarpaBrowser Architecture , 2002 .

[26]  Mark S. Miller,et al.  Robust composition: towards a unified approach to access control and concurrency control , 2006 .

[27]  Benjamin C. Pierce,et al.  Higher-Order Subtyping , 1994, Theor. Comput. Sci..

[28]  Robin Milner Functions as Processes , 1990, ICALP.

[29]  Vasco Thudichum Vasconcelos,et al.  Typed Concurrent Objects , 1994, ECOOP.

[30]  Davide Sangiorgi,et al.  Behavioral equivalence in the polymorphic pi-calculus , 2000, JACM.

[31]  Robin Milner,et al.  Calculi for interaction , 1996, Acta Informatica.

[32]  James R. Larus,et al.  Deconstructing process isolation , 2006, MSPC '06.

[33]  Benjamin C. Pierce,et al.  A Typed Higher-Order Programming Language Based on the Pi-Calculus , 1993 .

[34]  Peter Van Roy,et al.  A Practical Formal Model for Safety Analysis in Capability-Based Systems , 2005, TGC.

[35]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..