Session types in concurrent calculi : higher-order processes and objects

This dissertation investigates different formalisms, in the form of programming language calculi, that are aimed at providing a theoretical foundation for structured concurrent programming based on session types. The structure of a session type is essentially a process-algebraic style description of the behaviour of a single program identifier serving as a communication medium (and usually referred to as a channel): the types incorporate typed inputs, outputs, and choices which can be composed to form larger protocol descriptions. The effectiveness of session typing can be attributed to the linear treatment of channels and session types, and to the use of tractable methods such as syntactic duality to decide if the types of two connected channels are compatible. Linearity is ensured when accumulating the uses of a channel into a composite type that describes also the order of those actions. Duality provides a tractable and intuitive method for deciding when two connected channels can interact and exchange values in a statically determined type-safe way. We present our contributions to the theory of sessions, distilled into two families of programming calculi, the first based on higher-order processes and the second based on objects. Our work unifies, improves and extends, in manifold ways, the session primitives and typing systems for the Lambda-calculus, the Pi-calculus, the Object-calculus, and their combinations in multi-paradigm languages. Of particular interest are: the treatment of infinite interactions expressed with recursive sessions; the capacity to encapsulate channels in higher-order structures which can be exchanged and kept suspended, i.e., the use of code as data; the integration of protocol structure directly into the description of objects, providing a powerful and uniformly extensible set of implementation abstractions; finally, the introduction of asynchronous subtyping, which enables controlled reordering of actions on either side of a session. Our work on higher-order processes and on object calculi for session-based concurrent programming provides a theoretical foundation for programming language design integrating functional, process, and object-oriented features.

[1]  Sophia Drossopoulou,et al.  Objects and session types , 2009, Inf. Comput..

[2]  Andrew D. Gordon,et al.  A Concurrent Object Calculus: Reduction and Typing , 1998, HLCL.

[3]  Vasco Thudichum Vasconcelos,et al.  Language Primitives and Type Discipline for Structured Communication-Based Programming Revisited: Two Systems for Higher-Order Session Communication , 1998, SecReT@ICALP.

[4]  João Costa Seco,et al.  The Conversation Calculus: A Model of Service-Oriented Computation , 2008, ESOP.

[5]  Roberto Bruni,et al.  SCC: A Service Centered Calculus , 2006, WS-FM.

[6]  Antonio Vallecillo,et al.  Typing the Behavior of Objects and Component Using Session Types , 2003, FOCLASA.

[7]  Sophia Drossopoulou,et al.  Amalgamating sessions and methods in object-oriented languages with generics , 2009, Theor. Comput. Sci..

[8]  Nobuko Yoshida,et al.  Session-Based Distributed Programming in Java , 2008, ECOOP.

[9]  Davide Sangiorgi,et al.  Expressing mobility in process algebras : first-order and higher-order paradigms , 1993 .

[10]  Sophia Drossopoulou,et al.  A Distributed Object-Oriented Language with Session Types , 2005, TGC.

[11]  Benjamin C. Pierce,et al.  Advanced Topics In Types And Programming Languages , 2004 .

[12]  James R. Larus,et al.  Language support for fast and reliable message-based communication in singularity OS , 2006, EuroSys.

[13]  Mariangiola Dezani-Ciancaglini,et al.  Session and Union Types for Object Oriented Programming , 2008, Concurrency, Graphs and Models.

[14]  António Ravara,et al.  Modular session types for distributed object-oriented programming , 2010, POPL '10.

[15]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[16]  Nobuko Yoshida,et al.  Structured Interactional Exceptions in Session Types , 2008, CONCUR.

[17]  Roberto Bruni,et al.  Multiparty Sessions in SOC , 2008, COORDINATION.

[18]  Robin Milner,et al.  Communicating and mobile systems - the Pi-calculus , 1999 .

[19]  Konstantinos Sagonas,et al.  Practical type inference based on success typings , 2006, PPDP '06.

[20]  Hugo Torres Vieira,et al.  Conversation types , 2009, Theor. Comput. Sci..

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

[22]  Luca Padovani,et al.  Foundations of session types , 2009, PPDP '09.

[23]  Benjamin C. Pierce,et al.  Recursive subtyping revealed , 2000, Journal of Functional Programming.

[24]  Sven-Olof Nyström A soft-typing system for Erlang , 2003, ERLANG '03.

[25]  R. Milner,et al.  A Theoretical Basis of Communication-Centred Concurrent Programming , 2005 .

[26]  Luca Padovani Session Types at the Mirror , 2009, ICE.

[27]  Julian Rathke,et al.  safeDpi: a language for controlling mobile code , 2005, Acta Informatica.

[28]  Roberto Bruni,et al.  Sessions and Pipelines for Structured Service Programming , 2008, FMOODS.

[29]  Simon J. Gay,et al.  Subtyping for session types in the pi calculus , 2005, Acta Informatica.

[30]  Mario Bravetti,et al.  A Theory for Strong Service Compliance , 2007, COORDINATION.

[31]  Eduardo Bonelli,et al.  Multipoint Session Types for a Distributed Calculus , 2007, TGC.

[32]  Eduardo Bonelli,et al.  Correspondence assertions for process synchronization in concurrent communications , 2004, J. Funct. Program..

[33]  Cédric Fournet,et al.  Secure Implementations for Typed Session Abstractions , 2007, 20th IEEE Computer Security Foundations Symposium (CSF'07).

[34]  Sara Capecchi,et al.  Typing Asymmetric Client-Server Interaction , 2009, FSEN.

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

[36]  Joe Armstrong,et al.  A history of Erlang , 2007, HOPL.

[37]  Leonardo Gaetano Mezzina How to Infer Finite Session Types in a Calculus of Services and Sessions , 2008, COORDINATION.

[38]  Vasco Thudichum Vasconcelos,et al.  Linear type theory for asynchronous session types , 2009, Journal of Functional Programming.

[39]  Simon J. Gay Bounded polymorphism in session types , 2008, Math. Struct. Comput. Sci..

[40]  Luca Cardelli An Accidental Simula User , 2007, ECOOP.

[41]  Luca Padovani Contract-Directed Synthesis of Simple Orchestrators , 2008, CONCUR.

[42]  Philip Wadler,et al.  A practical subtyping system for Erlang , 1997, ICFP '97.

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

[44]  Loris D'Antoni,et al.  Global Progress in Dynamically Interleaved Multiparty Sessions , 2008, CONCUR.

[45]  Nobuko Yoshida,et al.  Channel dependent types for higher-order mobile processes , 2004, POPL.

[46]  Nobuko Yoshida,et al.  Session-based Type Discipline for Pi Calculus with Matching , 2009 .

[47]  Peter Thiemann,et al.  An Implementation of Session Types , 2004, PADL.

[48]  Cosimo Laneve,et al.  The Pairing of Contracts and Session Types , 2008, Concurrency, Graphs and Models.

[49]  Sophia Drossopoulou,et al.  Session Types for Object-Oriented Languages , 2006, ECOOP.

[50]  Raheel Ahmad,et al.  The π-Calculus: A theory of mobile processes , 2008, Scalable Comput. Pract. Exp..

[51]  Matthew Hennessy,et al.  A distributed Pi-calculus , 2007 .

[52]  Nobuko Yoshida,et al.  Global Principal Typing in Partially Commutative Asynchronous Sessions , 2009, ESOP.

[53]  Nobuko Yoshida,et al.  Two Session Typing Systems for Higher-Order Mobile Processes , 2007, TLCA.

[54]  Mario Bravetti,et al.  Towards a Unifying Theory for Choreography Conformance and Contract Compliance , 2007, SC@ETAPS.

[55]  Nobuko Yoshida,et al.  Language Primitives and Type Discipline for Structured Communication-Based Programming Revisited: Two Systems for Higher-Order Session Communication , 2007, Electron. Notes Theor. Comput. Sci..

[56]  Nobuko Yoshida,et al.  Session-Based Communication Optimisation for Higher-Order Mobile Processes , 2009, TLCA.

[57]  António Ravara,et al.  Type checking a multithreaded functional language with session types , 2006, Theor. Comput. Sci..

[58]  Sophia Drossopoulou,et al.  Amalgamating the Session Types and the Object Oriented Programming Paradigms , 2007 .

[59]  Dezani Mariangiola,et al.  On Progress for Structured Communications , 2008 .

[60]  Atsushi Igarashi,et al.  A generic type system for the Pi-calculus , 2004, Theor. Comput. Sci..

[61]  Joe Armstrong Getting Erlang to talk to the outside world , 2002, ERLANG '02.

[62]  Nobuko Yoshida,et al.  Structured Communication-Centred Programming for Web Services , 2007, ESOP.

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

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

[65]  Kohei Honda,et al.  Types for Dyadic Interaction , 1993, CONCUR.

[66]  Davide Sangiorgi,et al.  The Pi-Calculus - a theory of mobile processes , 2001 .

[67]  Nobuko Yoshida,et al.  Completeness and Logical Full Abstraction in Modal Logics for Typed Mobile Processes , 2008, ICALP.

[68]  Davide Sangiorgi,et al.  From -calculus to Higher-order -calculus | and Back , 2007 .

[69]  Davide Sangiorgi,et al.  Communicating and Mobile Systems: the π-calculus, , 2000 .

[70]  Mariangiola Dezani-Ciancaglini,et al.  Asynchronous Session Types and Progress for Object Oriented Languages , 2007, FMOODS.

[71]  J. Palsberg Efficient Inference of Object Types , 1996 .

[72]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[73]  Harold T. Hodes,et al.  The | lambda-Calculus. , 1988 .

[74]  Mariangiola Dezani-Ciancaglini,et al.  BASS: boxed ambients with safe sessions , 2006, PPDP '06.

[75]  Peter Thiemann,et al.  Session Types for Asynchronous Communication , 2007 .