MobilityReadingGroup

π-calculus, Session Types research at Imperial College

Multiparty Asynchronous Session Types
Kohei HONDA, Nobuko YOSHIDA, Marco CARBONE
35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '08). p. 273 - 284

Communication is becoming one of the central elements in software development. As a potential typed foundation for structured communication-centred programming, session types have been studied over the last decade for a wide range of process calculi and programming languages, focussing on binary (two-party) sessions. This work extends the foregoing theories of binary session types to multiparty, asynchronous sessions, which often arise in practical communication-centred applications. Presented as a typed calculus for mobile processes, the theory introduces a new notion of types in which interactions involving multiple peers are directly abstracted as a global scenario. Global types retain a friendly type syntax of binary session types while capturing complex causal chains of multiparty asynchronous interactions. A global type plays the role of a shared agreement among communication peers, and is used as a basis of efficient type checking through its projection onto individual peers. The fundamental properties of the session type discipline such as communication safety, progress and session fidelity are established for general n-party asynchronous interactions.

Please also see JACM (2016) version

@inproceedings{HYC2008,
  author = {Kohei Honda and Nobuko Yoshida and Marco Carbone},
  title = {{Multiparty Asynchronous Session Types}},
  booktitle = {35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages},
  pages = {273--284},
  publisher = {ACM},
  year = 2008
}
@inproceedings{HYC2008,
  author = {Kohei Honda and Nobuko Yoshida and Marco Carbone},
  title = {{Multiparty Asynchronous Session Types}},
  booktitle = {35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages},
  pages = {273--284},
  publisher = {ACM},
  doi = "10.1145/1328897.1328472",
  year = 2008
}