Communicating sequential processes
Communicating sequential processes
Programming in Occam
A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
A calculus of refinements for program derivations
Acta Informatica
Transputer reference manual
Parallel program design: a foundation
Parallel program design: a foundation
The Z notation: a reference manual
The Z notation: a reference manual
Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Refinement calculus, part II: parallel and reactive programs
REX workshop Proceedings on Stepwise refinement of distributed systems: models, formalisms, correctness
Programming from specifications
Programming from specifications
Unbounded nondeterminism in CSP
Proceedings of the fifth international conference on Mathematical foundations of programming semantics
Distributing gate-level digital timing simulation over arrays of transputers
Concurrency: Practice and Experience
Denotational Semantics for occam
Seminar on Concurrency, Carnegie-Mellon University
An Improved Failures Model for Communicating Processes
Seminar on Concurrency, Carnegie-Mellon University
Refinement of State-Based Concurrent Systems
VDM '90 Proceedings of the Third International Symposium of VDM Europe on VDM and Z - Formal Methods in Software Development
Refinement Calculus, Part I: Sequential Nondeterministic Programs
Stepwise Refinement of Distributed Systems, Models, Formalisms, Correctness, REX Workshop
A practical approach to software engineering using Z and the refinement calculus
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
Hi-index | 0.00 |
We present a basis for the formal specification and stepwise development of distributed systems, i.e. programs which are intended (at least conceptually) to run on distributed-memory parallel machines which communicate via synchronized message-passing. Our approach was motivated by the need for a practicable formal complement to the informal "bubbles and arrows" reasoning which is typically used by those who develop such programs for real parallel machines. The approach extends the sequential refinement calculus to allow the introduction of CSP-style concurrency. This extension is achieved by augmenting the language of the sequential calculus with appropriate parallel constructs and by replacing the underlying weakest precondition semantics with an extended failures-divergences semantics originally used to give a denotational semantics to occam. The resulting calculus maintains the laws of the original sequential calculus while allowing the seamless introduction of concurrency