CML: A higher concurrent language
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
A calculus of mobile processes, II
Information and Computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typed memory management via static capabilities
ACM Transactions on Programming Languages and Systems (TOPLAS)
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Types as models: model checking message-passing programs
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Types and programming languages
Types and programming languages
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
PI-Calculus: A Theory of Mobile Processes
PI-Calculus: A Theory of Mobile Processes
Type-safe multithreading in cyclone
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Language Primitives and Type Discipline for Structured Communication-Based Programming
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
A Fully Abstract May Testing Semantics for Concurrent Objects
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
An Interaction-based Language and its Typing System
PARLE '94 Proceedings of the 6th International PARLE Conference on Parallel Architectures and Languages Europe
CONCUR '93 Proceedings of the 4th International Conference on Concurrency Theory
A Behavioral Module System for the Pi-Calculus
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Types and Subtypes for Client-Server Interactions
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Typing correspondence assertions for communication protocols
Theoretical Computer Science
A generic type system for the Pi-calculus
Theoretical Computer Science
Typechecking Safe Process Synchronization
Electronic Notes in Theoretical Computer Science (ENTCS)
Using B refinement to analyse compensating business processes
ZB'03 Proceedings of the 3rd international conference on Formal specification and development in Z and B
A distributed object-oriented language with session types
TGC'05 Proceedings of the 1st international conference on Trustworthy global computing
Session types for object-oriented languages
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Typing the Behavior of Software Components using Session Types
Fundamenta Informaticae
Electronic Notes in Theoretical Computer Science (ENTCS)
Multiparty asynchronous session types
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Haskell session types with (almost) no class
Proceedings of the first ACM SIGPLAN symposium on Haskell
Session and Union Types for Object Oriented Programming
Concurrency, Graphs and Models
The Pairing of Contracts and Session Types
Concurrency, Graphs and Models
A secure compiler for session abstractions
Journal of Computer Security - 20th IEEE Computer Security Foundations Symposium (CSF)
Amalgamating sessions and methods in object-oriented languages with generics
Theoretical Computer Science
Information and Computation
Parameterised notions of computation
Journal of Functional Programming
Formal Methods for Web Services
Session types for linear multithreaded functional programming
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Modular session types for distributed object-oriented programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lightweight linear types in system f°
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Linear type theory for asynchronous session types
Journal of Functional Programming
Two session typing systems for higher-order mobile processes
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Asynchronous session types and progress for object oriented languages
FMOODS'07 Proceedings of the 9th IFIP WG 6.1 international conference on Formal methods for open object-based distributed systems
Bounded session types for object oriented languages
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
A protocol compiler for secure sessions in ML
TGC'07 Proceedings of the 3rd conference on Trustworthy global computing
Lolliproc: to concurrency from classical linear logic via curry-howard and control
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Sessions and session types: an overview
WS-FM'09 Proceedings of the 6th international conference on Web services and formal methods
Hi-index | 5.24 |
We define a language whose type system, incorporating session types, allows complex protocols to be specified by types and verified by static type checking. A session type, associated with a communication channel, specifies the state transitions of a protocol and also the data types of messages associated with transitions; thus type checking can verify both correctness of individual messages and correctness of sequences of transitions. Previously, session types have mainly been studied in the context of the @p-calculus; instead, our formulation is based on a multithreaded functional language with side-effecting input/output operations. Our typing judgements statically describe dynamic changes in the types of channels, and our function types not only specify argument and result types but also describe changes in channels. We formalize the syntax, semantics and type checking system of our language, and prove subject reduction and runtime type safety theorems.