Abstract
Three fundamental principles of static reasoning used to write imperative program code with built-in proof of its correctness are presented and explained in operational terms. It is argued that, although the traditional use of formal logic in the Hoare-Dijkstra-Gries methodology is probably the most efficient way to write code with built-in proofs of correctness, the ideas underlying that methodology are much simpler than commonly perceived through the veil of formal logic and axiomatic semantics. Examples are given illustrating principles and techniques for deriving code from specifications, using the informal reasoning of the mathematician without either the terminology or notation of formal logic.
- 1 Denman, R., Nauman, D. A., Potter, W., and Richter, G. Derivation of programs for freshmen. SIGCSE Bulletin, 26, 1 (March 1994) 116-120. Google Scholar
Digital Library
- 2 Dijkstra, Edsger W. Guarded commands, nondeterminacy and formal derivation of programs. Communications of the ACM, 18, 8 (Aug. 1975), 453-457. Google Scholar
Digital Library
- 3 Floyd, Robert W. Assigning meanings to programs. Proceedings of the AMS Symposia in Applied Mathematics, Vol. 19 (1967) 19-31.Google Scholar
Cross Ref
- 4 Gries, David The Science of Programming. Springer-Verlag, New York, 1981. Google Scholar
Digital Library
- 5 Hoare, C. A. R. An axiomatic basis for computer programming. Communications of the ACM 12, 10 (Oct. 1969), 576-583. Google Scholar
Digital Library
- 6 Lau, K., Bush. V. J., and Jinks, P.J. Towards an introductory formal programming course. SIGCSE Bulletin, 26, 1 (March 1994) 121-125. Google Scholar
Digital Library
- 7 Wadkins, J. R. Jefferson. Program control as a set-theoretic concept (RR-94-56). Educational Testing Service, Princeton, N.J. 1994.Google Scholar
Index Terms
Rigorous proofs of program correctness without formal logic
Recommendations
Rigorous proofs of program correctness without formal logic
SIGCSE '95: Proceedings of the twenty-sixth SIGCSE technical symposium on Computer science educationThree fundamental principles of static reasoning used to write imperative program code with built-in proof of its correctness are presented and explained in operational terms. It is argued that, although the traditional use of formal logic in the Hoare-...
Formal proof of a program: Find
In 1971, C.A.R. Hoare gave the proof of correctness and termination of a rather complex algorithm, in a paper entitled Proof of a program: Find. It is a handmade proof, where the program is given together with its formal specification and where each ...
Logic of Negation-Complete Interactive Proofs (Formal Theory of Epistemic Deciders)
We produce a decidable classical normal modal logic of internalised negation-complete and thus disjunctive non-monotonic interactive proofs (LDiiP) from an existing logical counterpart of non-monotonic or instant interactive proofs (LiiP). LDiiP ...







Comments