A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Predicate calculus and program semantics
Predicate calculus and program semantics
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
Termination Detection of Diffusing Computations in Communicating Sequential Processes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reduction: a method of proving properties of parallel programs
Communications of the ACM
Parallel program correctness through refinement
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Elements of the Theory of Computation
Elements of the Theory of Computation
A Discipline of Programming
A Method for Refining Atomicity in Parallel Algorithms
PARLE '89 Proceedings of the Parallel Architectures and Languages Europe, Volume II: Parallel Languages
Pretending Atomicity
The specification of distributed objects: liveness and locality
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Hi-index | 0.00 |
This paper revisits the formal justification of a common practice used in formal and informal reasoning about distributed systems: considering certain sections of code to be implicitly atomic. This practice is extremely useful as it allows distributed and concurrent programs to be developed, tested, and verified with large atomic blocks, yet executed with a much finer granularity of parallelism for efficiency. We expose the elements on which this practice is based and characterize the synchronization systems for which this practice is valid. Unlike previous justifications for this practice, our approach is based on a weakest precondition semantics. Owing to the generality of our model of computation, the result is applicable to both distributed-memory and shared-memory systems.