There are many ways to formulate and present program proofs. Some of the inherent problems are finding and formally stating specifications and invariants, developing and proving a basis of properties for the program's data types and problem domain, overcoming the sheer complexity and length of any proof (formal or informal), and avoiding errors in the proof. This paper uses an approach orthogonal to that presented in [Gries], which deals mainly with the final, concrete, fully optimized program. Instead, our approach stresses finding, stating, and proving parts of the invariants for the final program in clearly separated stages of a program derivation from a relatively simple, abstract, non-optimized program.
[1]
Donald Ervin Knuth,et al.
The Art of Computer Programming
,
1968
.
[2]
Joseph A. Goguen,et al.
Putting Theories Together to Make Specifications
,
1977,
IJCAI.
[3]
David Gries.
The Schorr-Waite Graph Marking Algorithm
,
1978,
Program Construction.
[4]
Willem P. de Roever,et al.
The Evolution of List-Copying Algorithms.
,
1979
.
[5]
Susan L. Gerhart,et al.
Proof Theory of Partial Correctness Verification Systems
,
1976,
SIAM J. Comput..
[6]
Arthur G. Duncan,et al.
Abstractions, instantiations, and proofs of marking algorithms
,
1977
.