Type driven development of concurrent communicating systems
Abstract
Modern software systems rely on communication, for example mobile applications communicating with a central server, distributed systems coordinating a telecommunications network, or concurrent systems handling events and processes in a desktop application. However, reasoning about concurrent programs is hard, since we must reason about each process and the order in which communication might happen between processes. In this paper, I describe a type-driven approach to implementing communicating concurrent programs, using the dependently typed programming language Idris. I show how the type system can be used to describe resource access protocols (such as controlling access to a file handle) and verify that programs correctly follow those protocols. Finally, I show how to use the type system to reason about the order of communication between concurrent processes, ensuring that each end of a communication channel follows a defined protocol.
Citation
Brady , E C 2017 , ' Type driven development of concurrent communicating systems ' , Computer Science , vol. 18 , no. 3 , 1413 . https://doi.org/10.7494/csci.2017.18.3.1413
Publication
Computer Science
Status
Peer reviewed
ISSN
1508-2806Type
Journal article
Rights
© 2017, the Author(s). The content of the journal is freely available according to the Creative Commons License Attribution 4.0 International (CC BY 4.0)
Description
This work was kindly supported by SICSA (the Scottish Informatics and Computer Science Alliance) and EPSRC grant EP/N024222/1 (Type-driven Verification of Communicating Systems).Collections
Items in the St Andrews Research Repository are protected by copyright, with all rights reserved, unless otherwise indicated.