Summary
Defining the semantics of programming languages by axioms and rules of inference yields a deduction system within which proofs may be given that programs satisfy specifications. The deduction system herein is shown to be consistent and also deduction complete with respect to Hoare's system. A subgoaler for the deduction system is described whose input is a significant subset of Pascal programs plus inductive assertions. The output is a set of verification conditions or lemmas to be proved. Several non-trivial arithmetic and sorting programs have been shown to satisfy specifications by using an interactive theorem prover to automatically generate proofs of the verification conditions. Additional components for a more powerful verification system are under construction.
Similar content being viewed by others
References
Allen, J. R., Luckham, D.: An interactive theorem-proving program. In: Meltzer, B., Michie, D. (eds.): Machine Intelligence 5. Edinburgh: Edinburgh University Press 1970, p. 321–336
Clint, M., Hoare, C. A. R.: Program proving: Jumps and functions. Acta Informatica 1, 214–224 (1972)
Floyd, R. W.: Algorithm 245, TREESORT 3. Comm. ACM 7, 701 (1964)
Floyd, R. W.: Assigning meanings to programs. In: Schwartz, J. T. (ed.). Mathematical aspects of computer science. Proc. Symposia in Applied Mathematics 19. Providence (R.I.): Am. Math. Soc. 1967, p. 19–32
Floyd, R. W.: Toward interactive design of correct programs. Proc. IFIP Congress 71, Amsterdam: North-Holland 1972, p. 7–10
Hoare, C. A. R.: An axiomatic basis for computer programming. Comm. ACM 12, 576–580, 583 (1969)
Hoare, C. A. R.: Procedures and parameters: An axiomatic approach. In: Engeler, E. (ed.): Symposium on semantics of algorithmic languages. Lecture Notes in Mathematics 188. Berlin-Heidelberg-New York: Springer 1971, p. 102–116
Hoare, C. A. R.: Proof of a program: FIND. Comm. ACM 14, 39–45 (1971)
Hoare, C. A. R., Wirth, N.: An axiomatic definition of the programming language Pascal. Acta Informatica 2, 335–355 (1973)
King, J. C.: A program verifier. Carnegie-Mellon University, Pittsburgh (Pa.). Ph.D. Thesis 1969. See also: Proc. IFIP Congress 71. Amsterdam: North-Holland 1972, p. 234–249
London, R. L.: The current state of proving programs correct. Proc. of ACM Annual Conference, 1972. New York: ACM, p. 39–46
McCarthy, J., Painter, J. A.: Correctness of a compiler for arithmetic expressions. In: Schwartz, J. T. (ed.): Mathematical aspects of computer science. Proc. Symposia in Applied Mathematics 19. Providence(R.I.): Am.Math. Soc.1967, p.33–41
Smith, D. C., Enea, H. J.: MLISP2. Stanford University Artificial Intelligence Memo AIM-195, April 1973
Wirth, N.: The programming language Pascal. Acta Informatica 1, 35–63 (1971)
Wirth, N.: The programming language Pascal (Revised Report). Berichte der Fachgruppe Computer-Wissenschaften Nr. 5, E.T. H., Zürich, November 1972
Author information
Authors and Affiliations
Additional information
This research is supported by the Advanced Research Projects Agency under Contracts SD-183 and DAHC 15-72-C-0308, and by the National Aeronautics and Space Administration under Contract NSR 05-020-500.
Rights and permissions
About this article
Cite this article
Igarashi, S., London, R.L. & Luckham, D.C. Automatic program verification I: A logical basis and its implementation. Acta Informatica 4, 145–182 (1975). https://doi.org/10.1007/BF00288746
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00288746