Modern software systems rely on communication, for example mobile applcations communicating with a central server, distributed systems coordinaing a telecommunications network, or concurrent systems handling events and processes in a desktop application. However, reasoning about concurrent prgrams 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 prtool...
We present a type-based approach to the verification of the communication structure of parallel pro...
Concurrent and distributed programming is notoriously hard. Modern languages and toolkits ease this ...
A concurrent system is a computer system with components that run in parallel and interact with each...
Modern software systems rely on communication, for example mobile applications communicating with a ...
Modern software systems rely on communication, for example mobile applcations communicating with a c...
Abstract. Type systems for programming languages help reasoning about program behavior and early fin...
Distributed systems are everywhere around us and guaranteeing their correctness is of paramount impo...
Modern software systems, in particular distributed ones, are everywhere around us and are at the bas...
AbstractHigh-level specification of patterns of communications such as protocols can be modeled eleg...
. We introduce basic language constructs and a type discipline as a foundation of structured communi...
Dependent types allow us to express precisely what a function is intended to do. Recent work on Quan...
This dissertation investigates different formalisms, in the form of programming language calculi, th...
Concurrent processes can be extremely difficult to reason about, both for programmers and formally. ...
Abstract. Session types are types for distributed communicating pro-cesses. They were born from proc...
Program synthesis is a discipline aimed at the automatic construction of executable programs from de...
We present a type-based approach to the verification of the communication structure of parallel pro...
Concurrent and distributed programming is notoriously hard. Modern languages and toolkits ease this ...
A concurrent system is a computer system with components that run in parallel and interact with each...
Modern software systems rely on communication, for example mobile applications communicating with a ...
Modern software systems rely on communication, for example mobile applcations communicating with a c...
Abstract. Type systems for programming languages help reasoning about program behavior and early fin...
Distributed systems are everywhere around us and guaranteeing their correctness is of paramount impo...
Modern software systems, in particular distributed ones, are everywhere around us and are at the bas...
AbstractHigh-level specification of patterns of communications such as protocols can be modeled eleg...
. We introduce basic language constructs and a type discipline as a foundation of structured communi...
Dependent types allow us to express precisely what a function is intended to do. Recent work on Quan...
This dissertation investigates different formalisms, in the form of programming language calculi, th...
Concurrent processes can be extremely difficult to reason about, both for programmers and formally. ...
Abstract. Session types are types for distributed communicating pro-cesses. They were born from proc...
Program synthesis is a discipline aimed at the automatic construction of executable programs from de...
We present a type-based approach to the verification of the communication structure of parallel pro...
Concurrent and distributed programming is notoriously hard. Modern languages and toolkits ease this ...
A concurrent system is a computer system with components that run in parallel and interact with each...