Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science
Communication and Concurrency
Language support for lightweight transactions
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
On the bisimulation proof method
Mathematical Structures in Computer Science
A theory of bisimulation for a fragment of concurrent ML with local names
Theoretical Computer Science
BioAmbients: an abstraction for biological compartments
Theoretical Computer Science - Special issue: Computational systems biology
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
AtomCaml: first-class atomicity via rollback
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Small bisimulations for reasoning about higher-order imperative programs
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Safe ambients: abstract machine and distributed implementation
Science of Computer Programming
Computer
Environmental Bisimulations for Higher-Order Languages
LICS '07 Proceedings of the 22nd Annual IEEE Symposium on Logic in Computer Science
High-level small-step operational semantics for transactions
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Semantics of transactional memory and automatic mutual exclusion
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composable memory transactions
Communications of the ACM - Designing games with a purpose
Model checking transactional memory with spin
Proceedings of the twenty-seventh ACM symposium on Principles of distributed computing
A concurrent calculus with atomic transactions
ESOP'07 Proceedings of the 16th European conference on Programming
A high-level implementation of composable memory transactions in concurrent haskell
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
Maintaining database integrity with refinement types
Proceedings of the 25th European conference on Object-oriented programming
Correctness of an STM Haskell implementation
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We address the problem of reasoning about Haskell programs that use Software Transactional Memory (STM). As a motivating example, we consider Haskell code for a concurrent non-deterministic tree rewriting algorithm implementing the operational semantics of the ambient calculus. The core of our theory is a uniform model, in the spirit of process calculi, of the run-time state of multi-threaded STM Haskell programs. The model was designed to simplify both local and compositional reasoning about STM programs. A single reduction relation captures both pure functional computations and also effectful computations in the STM and I/O monads. We state and prove liveness, soundness, completeness, safety, and termination properties relating source processes and their Haskell implementation. Our proof exploits various ideas from concurrency theory, such as the bisimulation technique, but in the setting of a widely used programming language rather than an abstract process calculus. Additionally, we develop an equational theory for reasoning about STM Haskell programs, and establish for the first time equations conjectured by the designers of STM Haskell. We conclude that using a pure functional language extended with STM facilitates reasoning about concurrent implementation code.