Language Primitives and Type Discipline for Structured Communication-Based Programming Revisited: Two Systems for Higher-Order Session Communication

We introduce basic language constructs and a type discipline as a foundation of structured communication-based concurrent programming. The constructs, which are easily translatable into the summation-less asynchronous π-calculus, allow programmers to organise programs as a combination of multiple flows of (possibly unbounded) reciprocal interactions in a simple and elegant way, subsuming the preceding communication primitives such as method invocation and rendez-vous. The resulting syntactic structure is exploited by a type discipline a la ML, which offers a high-level type abstraction of interactive behaviours of programs as well as guaranteeing the compatibility of interaction patterns between processes in a well-typed program. After presenting the formal semantics, the use of language constructs is illustrated through examples, and the basic syntactic results of the type discipline are established. Implementation concerns are also addressed.

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

[2]  Robin Milner,et al.  Functions as processes , 1990, Mathematical Structures in Computer Science.

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

[4]  Davide Sangiorgi pi-Calculus, Internal Mobility, and Agent-Passing Calculi , 1996, Theor. Comput. Sci..

[5]  Kazuhiko Kato,et al.  Semantics for communication primitives in a polymorphic language , 1993, POPL '93.

[6]  D. Sangiorgi - calculus , internal mobility , and agent-passing calculi , 1995 .

[7]  Davide Sangiorgi,et al.  Behavioral equivalence in the polymorphic pi-calculus , 1997, POPL '97.

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

[9]  David Walker,et al.  Objects in the pi-Calculus , 1992, Inf. Comput..

[10]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[11]  Cliff B. Jones A pi-Calculus Semantics for an Object-Based Design Notation , 1993, CONCUR.

[12]  Akinori Yonezawa,et al.  ABCL: an object-oriented concurrent system , 1990 .

[13]  John H. Reppy,et al.  CML: A Higher-Order Concurrent Language , 1991, PLDI.

[14]  Mario Tokoro,et al.  Object-oriented concurrent programming , 1987 .

[15]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[16]  David Walker,et al.  A Polymorphic Type System for the Polyadic pi-calculus , 1995, CONCUR.

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

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

[19]  Flemming Nielson,et al.  Higher-order concurrent programs with finite communication topology (extended abstract) , 1994, POPL '94.

[20]  Simon J. Gay,et al.  Types and Subtypes for Client-Server Interactions , 1999, ESOP.

[21]  Cliff B. Jones,et al.  Accommodating interference in the formal design of concurrent object-based programs , 1996, Formal Methods Syst. Des..

[22]  Atsushi Ohori,et al.  A compilation method for ML-style polymorphic record calculi , 1992, POPL '92.

[23]  Nobuko Yoshida,et al.  Graph Types for Monadic Mobile Processes , 1996, FSTTCS.

[24]  Vasco Thudichum Vasconcelos,et al.  Principal Typing Schemes in a Polyadic pi-Calculus , 1993, CONCUR.

[25]  Vasco T. Vasconcelos,et al.  Recursive Types in a Calculus of Objects , 1993 .

[26]  B. Courcelle Fundamental properties of infinite trees , 1983 .

[27]  Cliff B. Jones,et al.  Process algebraic foundations for an object-based design notation , 1993 .

[28]  Benjamin C. Pierce,et al.  Linearity and the pi-calculus , 1996, POPL '96.

[29]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

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

[31]  Kohei Honda,et al.  Composing processes , 1996, POPL '96.

[32]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[33]  Kohei Honda,et al.  An Interaction-based Language and its Typing System , 1994, PARLE.

[34]  Pierre America,et al.  Operational semantics of a parallel object-oriented language , 1986, POPL '86.

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

[36]  Vasco T. Vasconcelos,et al.  A Framework for Compiling Object Calculi , 1997 .

[37]  Mario Tokoro,et al.  A Typing System for a Calculus of Objects , 1993, ISOTAS.

[38]  Robin Milner,et al.  The Polyadic π-Calculus: a Tutorial , 1993 .