Proving the Correctness of Multiprocess Programs

  title={Proving the Correctness of Multiprocess Programs},
  author={Leslie Lamport},
  journal={IEEE Transactions on Software Engineering},
  • L. Lamport
  • Published 1 March 1977
  • Computer Science
  • IEEE Transactions on Software Engineering
The inductive assertion method is generalized to permit formal, machine-verifiable proofs of correctness for multiprocess programs. Individual processes are represented by ordinary flowcharts, and no special synchronization mechanisms are assumed, so the method can be applied to a large class of multiprocess programs. A correctness proof can be designed together with the program by a hierarchical process of stepwise refinement, making the method practical for larger programs. The resulting… 
The temporal logic of programs
  • A. Pnueli
  • Computer Science
    18th Annual Symposium on Foundations of Computer Science (sfcs 1977)
  • 1977
A unified approach to program verification is suggested, which applies to both sequential and parallel programs. The main proof method suggested is that of temporal reasoning in which the time
A Proof System for Communicating Sequential Processes
  • N.
  • Computer Science
  • 2005
An axiomatic proof system is presented for proving partial correctness and absence o f deadlock (and failure) of communicating sequential processes. The key (meta) rule introduces coop eration
A New Approach to Proving the Correctness of Multiprocess Programs
A new, nonassertional approach to proving multiprocess program correctness is described by proving the correctness of a new algorithm to solve the mutual exclusion problem. The algorithm is an
A Proof System for Communicating Sequential Processes
An axiomatic proof system is presented for proving partial correctness and absence of deadlock of communicating sequential processes, the key (meta) rule introduces cooperation between proofs, and CSP's new convention for distributed termination of loops is dealt with.
Formal derivation of strongly correct concurrent programs
An iterative, convergent calculus is developed for synthesizing the invariant and synchronizing conditions which guarantee strong correctness and these conditions are constructed as limits of recurrences associated with the specifications and the actions.
Formal Verification of Concurrent Programs Using the Larch Prover
  • B. Chetali
  • Computer Science
    IEEE Trans. Software Eng.
  • 1998
This paper investigates how the UNITY methodology can be mechanized within a general purpose first order logic theorem prover like LP, and how it can use the theorem proving methodology to prove safety and liveness properties.
Formal Justification of a Proof System for Communicating Sequential Processes
  • K. Apt
  • Computer Science, Mathematics
  • 1983
Soundness and relative completeness of this proof system dealing with partial correctness of communicating sequential processes are proved and it is indicated in what way the semantics and the proof system can be extended to deal with the total correctness of the programs.
The ‘Hoare logic’ of concurrent programs
Hoare's logical system for specifying and proving partial correctness properties of sequential programs is generalized to concurrent programs and it is shown that by specifying certain requirements for the unimplemented parts, correctness properties can be proved without completely implementing the program.
Towards Deductive Verification of Message-Passing Parallel Programs
  • Ziqing Luo, Stephen F. Siegel
  • Computer Science
    2018 IEEE/ACM 2nd International Workshop on Software Correctness for HPC Applications (Correctness)
  • 2018
A method is proposed that involves transforming the program into an annotated sequential program that can be verified with off-the-shelf deductive tools, such as Frama-C, and can prove user-specified correctness properties without any bounds on the number of processes or other parameters.
Formal Verification of Concurrent Programs in LP and in COQ: A Comparative Analysis
This paper describes the formal verification of parallel programs using a rewrite and induction based theorem prover like LP and a higher order theorem prover based on the Calculus of Inductive


Proving Assertions about Parallel Programs
Axiomatic Proof Techniques for Parallel Programs
  • S. Owicki
  • Computer Science
    Outstanding Dissertations in the Computer Sciences
  • 1975
The deductive system gives an accurate description of program execution and is powerful enough to yield a proof of any true partial correctness formula, as well as being consistent and complete with respect to an interpretive model of parallel execution.
Formalization of properties of parallel programs
A class of parallel programs is described and a formalization of certain properties of such programs in predicate calculus is given, which gives a practical method for proving properties ofsuch programs.
The application of program-proving techniques to the verification of synchronization processes
  • K. Levitt
  • Computer Science
    AFIPS '72 (Fall, part I)
  • 1972
The purpose of this paper is to establish the applicability of program-proving techniques to the verification of operating systems, control programs and synchronization programs and the techniques discussed are applicable to any set of such control primitives.
Formal verification of parallel programs
An induction principle is presented which treats the control and data state sets on the same ground and it is observed that certain correctness conditions can be expressed without enumeration of the set of all possible control states.
Synchronization of communicating processes
The formal description of the synchronization mechanism makes it very easy to prove that the buffer will neither overflow nor underflow, that senders and receivers will never operate on the same message frame in the buffer nor will they run into a deadlock.
Concurrent Programming Concepts
The evolution of language features for multiprogramming from event queues and semaphores to critical regions and monitors is described and it is suggested that the choice of language concepts should be guided by two simple principles.
Correctness of realizations of levels of abstraction in operating systems
A method of proving properties of the implementation of levels of abstraction in a hierarchically structured Operating System where the hierarchy of the system is taken into account and the proofs of the realization of the last level and, consequently, of the whole system are carried out.
On-the-fly garbage collection: an exercise in cooperation
As an example of cooperation between sequential processes with very little mutual interference despite frequent manipulations of a large shared data space, a technique is developed which allows
Parallel Programming: An Axiomatic Approach
  • C. Hoare
  • Economics, Computer Science
    Comput. Lang.
  • 1976