Behavioral Types in Programming Languages

A recent trend in programming language research is to use behavioral type theory to ensure various correctness properties of large-scale, communication-intensive systems. Behavioral types encompass concepts such as interfaces, communication protocols, contracts, and choreography. The successful application of behavioral types requires a solid understanding of several practical aspects, from their representation in a concrete programming language, to their integration with other programming constructs such as methods and functions, to design and monitoring methodologies that take behaviors into account. Behavioral Types in Programming Languages provides the reader with the first comprehensive overview of the state of the art of these practical aspects, which are summarized as the pragmatics of behavioral types. Each section covers a particular programming paradigm or methodology, providing an ideal reference for programming languages researchers interested the topic, and in identifying the areas as yet unexplored.

[1]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[2]  Luís Caires An Exception Aware Behavioral Type System for Object-Oriented Programs , 2009 .

[3]  Chao Cai,et al.  Towards the theoretical foundation of choreography , 2007, WWW '07.

[4]  Laura Bocchi,et al.  Timed Multiparty Session Types , 2014, CONCUR.

[5]  Yingjiu Li Data and Applications Security and Privacy XXV - 25th Annual IFIP WG 11.3 Conference, DBSec 2011, Richmond, VA, USA, July 11-13, 2011. Proceedings , 2011, DBSec.

[6]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..

[7]  Vivek Sarkar,et al.  X10: an object-oriented approach to non-uniform cluster computing , 2005, OOPSLA '05.

[8]  Sophia Drossopoulou,et al.  Bounded Session Types for Object Oriented Languages , 2006, FMCO.

[9]  Davide Ancona,et al.  Automatic Generation of Self-monitoring MASs from Multiparty Global Session Types in Jason , 2012, DALT.

[10]  Robert DeLine,et al.  Adoption and focus: practical linear types for imperative programming , 2002, PLDI '02.

[11]  Gianluigi Zavattaro,et al.  Composing Services with JOLIE , 2007, Fifth European Conference on Web Services (ECOWS'07).

[12]  Daniel Brand,et al.  On Communicating Finite-State Machines , 1983, JACM.

[13]  Anand S. Rao,et al.  AgentSpeak(L): BDI Agents Speak Out in a Logical Computable Language , 1996, MAAMAW.

[14]  Csr Young,et al.  How to Do Things With Words , 2009 .

[15]  Davide Ancona,et al.  Attribute Global Types for Dynamic Checking of Protocols in Logic-based Multiagent Systems , 2013, Theory Pract. Log. Program..

[16]  Ivan Lanese,et al.  Dynamic Error Handling in Service Oriented Applications , 2009, Fundam. Informaticae.

[17]  Nobuko Yoshida,et al.  Dynamic multirole session types , 2011, POPL '11.

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

[19]  Cédric Fournet,et al.  A secure compiler for session abstractions , 2008, J. Comput. Secur..

[20]  Mario Bravetti,et al.  A Foundational Theory of Contracts for Multi-party Service Composition , 2008, Fundam. Informaticae.

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

[22]  Davide Sangiorgi,et al.  Session types revisited , 2012, PPDP.

[23]  Miriam A. M. Capretz,et al.  Privacy Protection Framework with Defined Policies for Service-Oriented Architecture , 2012 .

[24]  Riccardo Pucella,et al.  Haskell session types with (almost) no class , 2008, Haskell '08.

[25]  Fabrizio Montesi,et al.  Choreographies, logically , 2017, Distributed Computing.

[26]  António Ravara,et al.  Modular Session Types for Objects , 2015, Log. Methods Comput. Sci..

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

[28]  Fabrizio Montesi,et al.  Deadlock-freedom-by-design: multiparty asynchronous global programming , 2013, POPL.

[29]  Gianluigi Zavattaro,et al.  Service-Oriented Programming with Jolie , 2014, Web Services Foundations.

[30]  Agostino Poggi,et al.  Developing Multi-agent Systems with JADE , 2007, ATAL.

[31]  Nobuko Yoshida,et al.  Safe Parallel Programming with Session Java , 2011, COORDINATION.

[32]  Nobuko Yoshida,et al.  Type-Safe Eventful Sessions in Java , 2010, ECOOP.

[33]  Nobuko Yoshida,et al.  Practical interruptible conversations: distributed dynamic verification with multiparty session types and Python , 2015, Formal Methods Syst. Des..

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

[35]  Gruia-Catalin Roman,et al.  Coordination Models and Languages - 13th International Conference, COORDINATION 2011, Reykjavik, Iceland, June 6-9, 2011. Proceedings , 2011, COORDINATION.

[36]  Emilio Tuosto,et al.  From Communicating Machines to Graphical Choreographies , 2015, POPL.

[37]  Michael Wooldridge,et al.  Programming Multi-Agent Systems in AgentSpeak using Jason (Wiley Series in Agent Technology) , 2007 .

[38]  Vasco Thudichum Vasconcelos,et al.  Channels as Objects in Concurrent Object-Oriented Programming , 2010, PLACES.

[39]  Luca Padovani,et al.  Exception handling for copyless messaging , 2012, PPDP.

[40]  Juris Hartmanis Recent Advances in the Message Passing Interface , 2011, Lecture Notes in Computer Science.

[41]  Mariangiola Dezani-Ciancaglini,et al.  Deriving session and union types for objects , 2013, Math. Struct. Comput. Sci..

[42]  Cristiano Calcagno,et al.  Proving Copyless Message Passing , 2009, APLAS.

[43]  Nobuko Yoshida,et al.  Protocol-based verification of message-passing parallel programs , 2015, OOPSLA.

[44]  Luca Padovani,et al.  Formal Methods for Web Services: 9th International School on Formal Methods for the Design of Computer, Communication, and Software Systems, SFM 2009, Bertinoro, Italy, June 1-6, 2009, Advanced Lectures , 2009 .

[45]  Jonathan Aldrich,et al.  Modular typestate checking of aliased objects , 2007, OOPSLA.

[46]  Roger M. Needham,et al.  Using encryption for authentication in large networks of computers , 1978, CACM.

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

[48]  Jan Mendling,et al.  From Inter-organizational Workflows to Process Execution: Generating BPEL from WS-CDL , 2005, OTM Workshops.

[49]  Kiyoshi Agusa,et al.  Session Type Inference in Haskell , 2011, PLACES.

[50]  Francisco Martins,et al.  Towards deductive verification of MPI programs against session types , 2013, PLACES.

[51]  Nobuko Yoshida,et al.  Structured Communication-Centered Programming for Web Services , 2007, TOPL.

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

[53]  Francisco Curbera,et al.  Web Services Business Process Execution Language Version 2.0 , 2007 .

[54]  Matthew Hennessy,et al.  Mutually Testing Processes - (Extended Abstract) , 2013, CONCUR.

[55]  C. A. R. Hoare,et al.  Stuck-Free Conformance , 2004, CAV.

[56]  Luca Padovani,et al.  The chemical approach to typestate-oriented programming , 2015, OOPSLA.

[57]  Nobuko Yoshida,et al.  Structuring Communication with Session Types , 2014, Concurrent Objects and Beyond.

[58]  Nobuko Yoshida,et al.  Multiparty Session C: Safe Parallel Programming with Message Optimisation , 2012, TOOLS.

[59]  Mario Bravetti,et al.  Contract Compliance and Choreography Conformance in the Presence of Message Queues , 2008, WS-FM.

[60]  A. Roadmapof A Roadmap of Agent Research and Development , 1995 .

[61]  Rocco De Nicola,et al.  Testing Equivalences for Processes , 1984, Theor. Comput. Sci..

[62]  Davide Ancona,et al.  Constrained global types for dynamic checking of protocol conformance in multi-agent systems , 2013, SAC '13.

[63]  Luca Padovani Contract-based discovery of Web services modulo simple orchestrators , 2010, Theor. Comput. Sci..

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

[65]  Nobuko Yoshida,et al.  Protocols by Default - Safe MPI Code Generation Based on Session Types , 2015, CC.

[66]  Nobuko Yoshida,et al.  Parameterised Multiparty Session Types , 2010, Log. Methods Comput. Sci..

[67]  Nobuko Yoshida,et al.  Specification and Verification of Protocols for MPI Programs , 2013 .

[68]  Guy L. Steele Parallel Programming and Parallel Abstractions in Fortress , 2005, IEEE PACT.

[69]  Gary Brown,et al.  Scribbling Interactions with a Formal Foundation , 2011, ICDCIT.

[70]  Nobuko Yoshida,et al.  Compositional Choreographies , 2013, CONCUR.

[71]  Tomas Vitvar,et al.  SAWSDL: Semantic Annotations for WSDL and XML Schema , 2007, IEEE Internet Computing.

[72]  Nobuko Yoshida,et al.  Multiparty Compatibility in Communicating Automata: Characterisation and Synthesis of Global Session Types , 2013, ICALP.

[73]  Nobuko Yoshida,et al.  Hybrid Session Verification Through Endpoint API Generation , 2016, FASE.

[74]  John-Jules Ch. Meyer,et al.  Deontic Logic and Artificial Normative Systems, 8th International Workshop on Deontic Logic in Computer Science, DEON 2006, Utrecht, The Netherlands, July 12-14, 2006, Proceedings , 2006, DEON.

[75]  Luca Padovani,et al.  A simple library implementation of binary sessions* , 2016, Journal of Functional Programming.

[76]  Mark A. Hillebrand,et al.  VCC: A Practical System for Verifying Concurrent C , 2009, TPHOLs.

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

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

[79]  Marcello M. Bonsangue,et al.  Formal Methods for Components and Objects, 7th International Symposium, FMCO 2008, Sophia Antipolis, France, October 21-23, 2008, Revised Lectures , 2009, FMCO.

[80]  Nobuko Yoshida,et al.  Pabble: parameterised Scribble , 2015, Service Oriented Computing and Applications.

[81]  Luca Padovani,et al.  Typing Copyless Message Passing , 2012, Log. Methods Comput. Sci..

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

[83]  Anthony Skjellum,et al.  A High-Performance, Portable Implementation of the MPI Message Passing Interface Standard , 1996, Parallel Comput..

[84]  John Tang Boyland Fractional Permissions , 2013, Aliasing in Object-Oriented Programming.

[85]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[86]  Laura Bocchi,et al.  Asynchronous Distributed Monitoring for Multiparty Session Enforcement , 2011, TGC.

[87]  Filipe David Oliveira Militão Design and implementation of a behaviorally typed programming system for web services , 2008 .

[88]  Nobuko Yoshida,et al.  Multiparty Session Actors , 2014 .

[89]  Éric Tanter,et al.  Foundations of Typestate-Oriented Programming , 2014, ACM Trans. Program. Lang. Syst..

[90]  Luca Padovani,et al.  Polymorphic Types for Leak Detection in a Session-Oriented Functional Language , 2013, FMOODS/FORTE.

[91]  Nobuko Yoshida,et al.  Protocol-based verification of MPI programs , 2014 .

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

[93]  Laura Bocchi,et al.  Meeting Deadlines Together , 2015, CONCUR.

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

[95]  Mario Bravetti,et al.  Advanced Mechanisms for Service Composition, Query and Discovery , 2011, Results of the SENSORIA Project.

[96]  Cristiano Calcagno,et al.  Tracking Heaps That Hop with Heap-Hop , 2010, TACAS.

[97]  Jonathan Aldrich,et al.  Verifying correct usage of atomic blocks and typestate , 2008, OOPSLA.

[98]  Ivan Lanese,et al.  Bridging the Gap between Interaction- and Process-Oriented Choreographies , 2008, 2008 Sixth IEEE International Conference on Software Engineering and Formal Methods.

[99]  Jonathan Aldrich,et al.  Changing state in the plaid language , 2011, OOPSLA Companion.

[100]  Martín Abadi,et al.  An Overview of the Singularity Project , 2005 .

[101]  Luca Padovani Contract-Based Discovery and Adaptation of Web Services , 2009, SFM.

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

[103]  Ricardo Corin,et al.  A Protocol Compiler for Secure Sessions in ML , 2007, TGC.

[104]  Éric Tanter,et al.  Gradual Typestate , 2011, ECOOP.

[105]  Nobuko Yoshida,et al.  SPY: Local Verification of Global Protocols , 2013, RV.

[106]  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..

[107]  Éric Tanter,et al.  First-class state change in plaid , 2011, OOPSLA '11.

[108]  Cédric Fournet,et al.  Cryptographic Protocol Synthesis and Verification for Multiparty Sessions , 2009, 2009 22nd IEEE Computer Security Foundations Symposium.

[109]  Walid Taha,et al.  Gradual Typing for Objects , 2007, ECOOP.

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

[111]  Filipe Militão An Exception Aware Behavioral Type System for Object-Oriented Programs , 2009 .

[112]  Nobuko Yoshida,et al.  Multiparty Session Nets , 2014, TGC.

[113]  Nobuko Yoshida,et al.  Multiparty asynchronous session types , 2008, POPL '08.

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

[115]  Robert DeLine,et al.  Typestates for Objects , 2004, ECOOP.

[116]  Nobuko Yoshida,et al.  Multiparty Session Types Meet Communicating Automata , 2012, ESOP.

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

[118]  Mario Bravetti,et al.  Service Discovery and Composition Based on Contracts and Choreographic Descriptions , 2013 .

[119]  Nobuko Yoshida,et al.  Secure Execution of Distributed Session Programs , 2011, PLACES.

[120]  Jonathan Aldrich,et al.  Typestate-oriented programming , 2009, OOPSLA Companion.

[121]  Bernardo Toninho,et al.  Higher-Order Processes, Functions, and Sessions: A Monadic Integration , 2013, ESOP.

[122]  Nobuko Yoshida,et al.  Practical Interruptible Conversations - Distributed Dynamic Verification with Session Types and Python , 2013, RV.

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

[124]  Romain Demangeon,et al.  Nested Protocols in Session Types , 2012, CONCUR.

[125]  Tevfik Bultan,et al.  Analyzing singularity channel contracts , 2009, ISSTA.

[126]  Luca Padovani,et al.  On Global Types and Multi-Party Session , 2012, Log. Methods Comput. Sci..

[127]  Nobuko Yoshida,et al.  Verification of MPI Programs Using Session Types , 2012, EuroMPI.

[128]  Frank Pfenning,et al.  Session Types as Intuitionistic Linear Propositions , 2010, CONCUR.

[129]  Sreedhar B. Kodali,et al.  The Asynchronous Partitioned Global Address Space Model , 2010 .

[130]  Laura Bocchi,et al.  Monitoring Networks through Multiparty Session Types , 2013, FMOODS/FORTE.

[131]  A. S. Roa,et al.  AgentSpeak(L): BDI agents speak out in a logical computable language , 1996 .

[132]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[133]  Matthew Hennessy,et al.  Mutually Testing Processes , 2015, Log. Methods Comput. Sci..

[134]  Timothy W. Finin,et al.  Evaluation of KQML as an Agent Communication Language , 1995, ATAL.