Non-deterministic data types: models and implementations
Acta Informatica
Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
Accommodating interference in the formal design of concurrent object-based programs
Formal Methods in System Design
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Concurrency verification: introduction to compositional and noncompositional methods
Concurrency verification: introduction to compositional and noncompositional methods
Data Refinement: Model-Oriented Proof Methods and Their Comparison
Data Refinement: Model-Oriented Proof Methods and Their Comparison
The Formal Classification and Verification of Simpson's 4-Slot Asynchronous Communication Mechanism
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
Wanted: a compositional approach to concurrency
Programming methodology
Ramifications of metastability in bit variables explored via Simpson’s 4-slot mechanism
Formal Aspects of Computing
Theoretical Computer Science
Inter-process buffers in separation logic with rely-guarantee
Formal Aspects of Computing
Abstraction as a unifying link for formal approaches to concurrency
SEFM'12 Proceedings of the 10th international conference on Software Engineering and Formal Methods
Hi-index | 0.00 |
This paper presents a novel formal development of a non-trivial parallel program: Simpson's implementation of asynchronous communication mechanisms (ACMs). Although the correctness of the "4-slot algorithm" has been shown elsewhere, earlier developments are by no means intuitive. The aims of this paper include both the presentation of an understandable (yet formal) design history and the establishment of another way of "splitting (software) atoms". Using the "fiction of atomicity" as an aid to understanding the initial steps of development, the top-level specification is developed to code. The rely-guarantee approach is, here, combined with notions of read/write frames and "phased" specifications; the atomicity assumptions implied by rely/guarantee conditions are realised by clever choice of data representation. The development method herein is compared with other approaches ---in a spirit of cooperation--- as the authors believe that constructive comparison elucidates many of the finer points in the "4-slot" specification/development and of parallel programs in general.