Abstract

Behavioural type systems, usually associated to concurrent or distributed computations, encompass concepts such as interfaces, communication protocols, and contracts, in addition to the traditional input/output operations. The behavioural type of a software component specifies its expected patterns of interaction using expressive type languages, so types can be used to determine automatically whether the component interacts correctly with other components. Two related important notions of behavioural types are those of session types and behavioural contracts. This article surveys the main accomplishments of the last 20 years within these two approaches.

Highlights

  • Types make it possible to classify entities of a program and to describe the permissible results of a computation

  • An intersection type system introduces a type constructor ∧; an entity has type T1 ∧ T2 if it has both type T1 and type T2. This makes it possible to type a program that can exhibit behaviour corresponding to T1 as well as behaviour corresponding to T2, thereby enabling a notion of polymorphism

  • Typestates are akin to finite-state machines, and a language equipped with a static type system based on them can check at compile time if all possible sequences of operations are valid with respect to a correct use of the application

Read more

Summary

INTRODUCTION

Types make it possible to classify entities of a program and to describe the permissible results of a computation. During the 1990s, program semantics, in particular concurrency theory and especially the study of type disciplines for process calculi, inspired notions of typing that are able to describe properties associated with the behaviour of programs and in this way describe how a computation proceeds. This often includes accounting for notions such as causality, choice, and resource usage. The work on behavioural types arose in the context of type systems that capture properties of computations in process calculi.

OTHER APPROACHES TO BEHAVIOURAL TYPES
Intersection Types
Typestates
Types and Effects
Types for Nonuniform Objects
Processes as Types
Interface Automata
BINARY SESSIONS
Binary Session Types
Binary Contracts
Variations and Extensions of Binary Sessions
MULTIPARTY SESSIONS
Global and Local Types
Conversation Types
Multiparty Contracts
Extensions of Multiparty Session Types
Subtyping for Session Types
Polymorphism for Session Types
Refinement for Contracts
Linear Logic Foundations of Session Types
Logically Refined Session Types and Behavioural Contracts
CLASSES OF BEHAVIOURAL PROPERTIES
Safety Properties
Capturing Properties Using Spatial Types
Termination and Deadlock Freedom
Progress for Session Type Systems
RELATING APPROACHES
ALGORITHMS
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call