A constructive approach to the problem of program correctness

@article{Dijkstra1968ACA,
  title={A constructive approach to the problem of program correctness},
  author={Edsger W. Dijkstra},
  journal={BIT Numerical Mathematics},
  year={1968},
  volume={8},
  pages={174-186}
}
  • E. Dijkstra
  • Published 1 September 1968
  • Computer Science
  • BIT Numerical Mathematics
As an alternative to methods by which the correctness of given programs can be established a posteriori, this paper proposes to control the process of program generation such as to produce a priori correct programs. An example is treated to show the form that such a control might then take. This example comes from the field of parallel programming; the way in which it is treated is representative of the way in which a whole multiprogramming system has actually been constructed. 
Proof of a Program : C
TLDR
A proof is given of the correctness of the algorithm "Find" and an informal description of the purpose of the program and the method used.
Abstraction and Verification in Alphard: Introduction to Language and Methodology
TLDR
This paper attempts to capture the symbiotic influence of these two goals on the design of Alphard by interleaving the language description with the presentation of a proof technique and discussion of programming methodology.
The new programming discipline
TLDR
It is the perception that structured programming and the lessons to be learned from proofs of correctness can be applied in any language, including FORTRAN, and it is felt that these ideas should be promulgated to applied scientific programmers.
On a measure of program structure
TLDR
This thesis proposes a definition and a measure for program structure and evaluates the usefulness of the measure as a tool for determining and controlling structure in a program.
On correct program development
TLDR
The paper presents a method of correct programs' derivation using McCarthy's logic for this purpose using partial (or three valued) logic for the requirement of handling the problem of abortion.
Queen ' s University , * Belfast , Ireland FIND
  • R. Ca
  • Computer Science
  • 1971
TLDR
A proof is given of the correctness of the algorithm "Find" and an informal description of the purpose of the program and the method used.
Programming by action clusters
TLDR
A programming discipline, aiming at the systematic construction of programs from given global requirements, which is the conversion of the global requirements into sets of action clusters (sequences of program statements), which are then used as building blocks for the final program.
Tool support for invariant based programming
TLDR
An extension to an existing mathematics editor that supports invariant based programming, which is an approach to program construction where the authors provide the program pre- and postconditions as well as loop invariants before they construct the code itself.
Transformational Programming and the Derivation of Algorithms
TLDR
The transformational programming, method of algorithm derivation starts with a formal specification of the result to be achieved, plus some informal ideas as to what techniques will be used in the implementation, which is transformed into an implementation by means of correctness-preserving refinement and transformation steps.
...
...

References

SHOWING 1-2 OF 2 REFERENCES
Proof of algorithms by general snapshots
TLDR
It is shown by an elementary example how this possibility may be used to prove the correctness of an algorithm written in ALGOL 60, i.e. expressions of static conditions existing whenever the execution of the algorithm reaches particular points.
Correctness of a compiler for arithmetic expressions
Abstract : The paper contains a proof of the correctness of a simple compiling algorithm for compiling arithmetic expressions into machine language.