A new approach to the maximum flow problem
STOC '86 Proceedings of the eighteenth annual ACM symposium on Theory of computing
Hierarchical correctness proofs for distributed algorithms
PODC '87 Proceedings of the sixth annual ACM Symposium on Principles of distributed computing
The Formal Specification and Design of a Distributed Electronic Funds-Transfer System
IEEE Transactions on Computers
Parallel program design: a foundation
Parallel program design: a foundation
Proving Liveness Properties of Concurrent Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Science of Programming
A Discipline of Programming
How to cook a temporal proof system for your pet language
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
EFFICIENT GRAPH ALGORITHMS FOR SEQUENTIAL AND PARALLEL COMPUTERS
EFFICIENT GRAPH ALGORITHMS FOR SEQUENTIAL AND PARALLEL COMPUTERS
Formal specification and design of a message router
ACM Transactions on Software Engineering and Methodology (TOSEM)
A Decompositional Approach to the Design of Parallel Programs
IEEE Transactions on Software Engineering
Modeling deflection networks: design and specification
Proceedings of the 1999 ACM symposium on Applied computing
Formal Derivation of Concurrent Programs: An Example from Industry
IEEE Transactions on Software Engineering
Architecture-Directed Refinement
IEEE Transactions on Software Engineering
Formal Specification and Design of Mobile Systems
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Techniques for the design of communicating processes
IWSSD '91 Proceedings of the 6th international workshop on Software specification and design
Hi-index | 0.00 |
We apply a new method for the development of parallel programs to the problem of finding maximum flows in graphs. The method facilitates concurrent program design by separating the concerns of correctness from those of hardware and implementation. It uses predicate transformer semantics to define a set of basic operators for the specification and verification of programs. From an initial specification program development proceeds by a series of refinement steps, each of which constitutes a strengthening of the specification of the previous refinement. The method is completely formal in the sense that all reasoning steps are performed within predicate calculus. A program is viewed as a mathematical object enjoying certain properties, rather than in terms of its possible executions. We demonstrate the usefulness of the approach by deriving an efficient algorithm for the Maximum Flow Problem in a top-down manner.