This article demonstrates how a powerful and expressive abstraction from concurrency theory plays a dual rôle as a programming tool for concurrent applications and as a foundation for their verification. This abstraction—monads of resumptions expressed using monad transformers—is cheap: it is easy to understand, easy to implement, and easy to reason about. We illustrate the expressiveness of the resumption monad with the construction of an exemplary multitasking operating system kernel with process forking, preemption, message passing, and synchronization constructs in the pure functional programming language Haskell. Because resumption computations are stream-like structures, reasoning about this kernel may be posed as reasoning about stre...
This dissertation addresses the problem of automated reasoning about multi-threaded programs. Multi...
The functional concurrent language Eden is an extension of the lazy functional language Haskell by c...
We propose a model for measuring the runtime of concurrent programs by the minimal number of evaluat...
. A monad for concurrent programming that is suitable for being built into Haskell is presented. The...
It has often been suggested that functional languages provide an excellent basis for programming par...
This dissertation presents a number of methods to build massively concurrent network applications in...
A monad is presented which is suitable for writing concurrent programs in a purely functional progra...
It has long been known that some of the most common uses of for and while-loops in imperative progra...
Resumptions are a valuable tool in the analysis and design of semantic models for concurrent program...
This paper explores the use monads to structure functional programs. No prior knowledge of monads or...
This paper proposes to combine two seemingly opposed programming models for building massively concu...
This paper proposes to combine two seemingly opposed programming models for building massively concu...
We present CoCo, the Concurrency Commentator, a tool that recovers a declarative view of concurrent ...
A reversible semantics enables to undo computation steps. Reversing message-passing, concurrent prog...
Writing concurrent programs in languages that lack explicit support for concurrency can often be awk...
This dissertation addresses the problem of automated reasoning about multi-threaded programs. Multi...
The functional concurrent language Eden is an extension of the lazy functional language Haskell by c...
We propose a model for measuring the runtime of concurrent programs by the minimal number of evaluat...
. A monad for concurrent programming that is suitable for being built into Haskell is presented. The...
It has often been suggested that functional languages provide an excellent basis for programming par...
This dissertation presents a number of methods to build massively concurrent network applications in...
A monad is presented which is suitable for writing concurrent programs in a purely functional progra...
It has long been known that some of the most common uses of for and while-loops in imperative progra...
Resumptions are a valuable tool in the analysis and design of semantic models for concurrent program...
This paper explores the use monads to structure functional programs. No prior knowledge of monads or...
This paper proposes to combine two seemingly opposed programming models for building massively concu...
This paper proposes to combine two seemingly opposed programming models for building massively concu...
We present CoCo, the Concurrency Commentator, a tool that recovers a declarative view of concurrent ...
A reversible semantics enables to undo computation steps. Reversing message-passing, concurrent prog...
Writing concurrent programs in languages that lack explicit support for concurrency can often be awk...
This dissertation addresses the problem of automated reasoning about multi-threaded programs. Multi...
The functional concurrent language Eden is an extension of the lazy functional language Haskell by c...
We propose a model for measuring the runtime of concurrent programs by the minimal number of evaluat...