We define a language whose type system, incorporating session types, allows complex protocols to be specified by types and verified by static typechecking. 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 typechecking 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 π-calculus; instead, our formulation is based on a multi-threaded functional language with side-effecting input/output operations. Our typing judgements statically describe dynamic changes in the types of channels, our channel types statically track aliasing, and our function types not only specify argument and result types but also describe changes in channels. We formalize the syntax, semantics and typing system of our language, and prove subject reduction and runtime type safety theorems. We also present a type checking algorithm and show that it is correct with respect to the type system.
|
894
|
The lambda calculus, its syntax and semantics
– Barendregt
- 1984
|
|
886
|
A Calculus of Mobile Processes
– Milner, Parrow, et al.
- 1992
|
|
302
|
Types and programming languages
– Pierce
- 2002
|
|
260
|
at.el, Business process execution language for Web services
– Andrew
|
|
256
|
Enforcing high-level protocols in low-level software
– Deline, Fähndrich
- 2001
|
|
226
|
The π–calculus: A Theory of Mobile Processes
– Sangiorgi, Walker
- 2001
|
|
201
|
Flow-sensitive type qualifiers
– Foster, Terauchi, et al.
- 2002
|
|
132
|
Region-based memory management in cyclone
– Grossman, Morrisett, et al.
- 2002
|
|
90
|
Language primitives and type discipline for structured communication-based programming
– Honda, Vasconcelos, et al.
- 1998
|
|
64
|
A generic type system for the pi-calculus
– Igarashi, Kobayashi
- 2001
|
|
59
|
An interaction-based language and its typing system
– Takeuchi, Honda, et al.
- 1994
|
|
58
|
Types as models: model checking messagepassing programs
– Chaki, Rajamani, et al.
- 2002
|
|
53
|
Resource usage analysis
– Igarashi, Kobayashi
- 2002
|
|
52
|
Type-safe multithreading in cyclone
– Grossman
- 2003
|
|
47
|
Typing correspondence assertions for communication protocols
– Gordon, Jeffrey
|
|
43
|
Types for dyadic interaction
– Honda
- 1993
|
|
39
|
Types and subtypes for client-server interactions
– Gay, Hole
|
|
23
|
A fully abstract may testing semantics for concurrent objects
– Jeffrey, Rathke
|
|
20
|
Typing the behavior of objects and components using session types
– Vallecillo, Vasconcelos, et al.
- 2002
|
|
17
|
A process compensation language
– Ferreira, Butler
|
|
17
|
Session types for inter-process communication
– Gay, Vasconcelos, et al.
- 2003
|
|
11
|
Typechecking safe process synchronization
– Bonelli, Compagnoni, et al.
- 2004
|
|
9
|
António Ravara. Typing the Behavior of Objects and Components using Session Types
– Vallecillo, Vasconcelos
- 2002
|
|
8
|
An implementation of session types
– Neubauer, Thiemann
- 2004
|
|
8
|
CML: A higher order concurrent language
– Reppy
- 1991
|
|
4
|
António Ravara. Session Types for Inter-Process Communication
– Gay, Vasconcelos
- 2003
|
|
4
|
Using b refinement to analyse compensating business processes
– Ferreira, Butler
- 2003
|
|
2
|
A multi-threaded asynchronous language
– Paulino, Marques, et al.
- 2003
|
|
1
|
2] Eduardo Bonelli, Adriana Compagnoni, and Elsa Gunter. Correspondence assertions for process synchronization in concurrent communication
– North-Holland
- 1984
|
|
1
|
Rajamani and Jakob Rehof. A behavioral module system for the pi-calculus
– Sriram
- 2001
|
|
1
|
Using SPIN and STeP to verify business processes specifications
– Butler, Ferreira
- 2003
|
|
1
|
Web services choreography requirements, W3C working draft
– W3C
- 2004
|
|
1
|
Types and subtypes for client-server interactions. volume 1576
– Gay, Hole
- 1999
|
|
1
|
A behavioral module system for the pi-calculus. volume 2126
– Rajamani, Rehof
- 2001
|