Using message passing for distributed programming: proof rules and disciplines
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Proof System for Communicating Sequential Processes
ACM Transactions on Programming Languages and Systems (TOPLAS)
An axiomatic basis for computer programming
Communications of the ACM
A Discipline of Programming
Principles of proving concurrent programs in Gypsy
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Axiomatic verification to enhance software reliability
Axiomatic verification to enhance software reliability
Concepts and Notations for Concurrent Programming
ACM Computing Surveys (CSUR)
Fail-stop processors: an approach to designing fault-tolerant computing systems
ACM Transactions on Computer Systems (TOCS)
JDA: a step towards large-scale reuse on the web
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Hi-index | 0.00 |
Message passing provides a way for concurrently executing processes to communicate and synchronize. In this paper, we develop proof rules for asynchronous message-passing primitives (i.e. “send no-wait”). Two benefits accrue from this. The obvious one is that partial correctness proofs can be written for concurrent programs that use such primitives. This allows programs to be understood as predicate transformers, instead of by contemplating all possible execution interleavings. The second benefit is that the proof rules and their derivation shed light on how interference arises when message-passing operations are used and on how this interference can be controlled. This provides insight into programming techniques to eliminate interference in programs that involve asynchronous activity. Three safe uses of asynchronous message passing are described here: the transfer of values, the transfer of monotonic predicates, and the use of acknowledgments.