Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/800193.805820acmconferencesArticle/Chapter ViewAbstractPublication Pagesacm-national-conferenceConference Proceedingsconference-collections
Article
Free access

The current state of proving programs correct

Published: 01 August 1972 Publication History

Abstract

Presented are successful efforts in proving that computer programs are correct. Included are (i) the methods used, (ii) the wide class of programs (including systems programs) that have been proved, and (iii) implemented computer systems for demonstrating correctness. There is also a partially annotated bibliography.

References

[1]
Allen, C. D. 1971. The application of formal logic to programs and programming, IBM Systems J., 10, 1, 1971, 2-38.
[2]
Cooper, D. C. 1971. Programs for mechanical program verification, in Machine Intelligence 6, Meltzer, B. and Michie, D. (eds.), American Elsevier, 1971, 43-59. The method described is assigning relations to blocks, Cooper's variation of Floyd {1967}.
[3]
Deutsch, L. P. (n.d.). An interactive program verification system, Ph.D. thesis, University of California - Berkeley (to appear).
[4]
Dijkstra, E.W. 1968. The structure of the "THE"- multiprogramming system, Comm. ACM, 11, 5, May 1968, 341-346. See especially the appendix for a summary of what was proved and the overall methods.
[5]
Dijkstra, E. W. 1970. Notes on structured programming, T. H. - Report 70-WSK-03, Technical University Eindhoven, The Netherlands, Second Edition, April 1970.
[6]
Elspas, B.; Green, M. W.; Levitt, K. N.; and Waldinger, R. J. 1972a. Research on interactive program-proving techniques, Stanford Research Institute Report, May 1972.
[7]
Elspas, B.; Levitt, K. N.; Waldinger, R. J.; and Waksman, A. 1972b. An assessment of techniques for proving program correctness, Computing Surveys, 4, 2, June 1972 (to appear).
[8]
Feldman, J. A. 1972. Automatic programming, Artificial Intelligence Memo AIM-160, Stanford University, February 1972. Reviews automatic program synthesis as a means to achieve correct programs.
[9]
Floyd, R. W. 1967. Assigning meanings to programs, in Proceedings of a Symposium in Applied Mathematics, Vol. 19—Mathematical Aspects of Computer Science, Schwartz, J. T. (ed.), 19-32. The fundamental paper on the inductive assertions method.
[10]
Floyd, R. W. 1971. Toward interactive design of correct programs, IFIP Congress 71 Invited Papers Booklet, 1-4. Also Artificial Intelligence Memo AIM-150, Stanford University, September 1971.
[11]
Gerhart, S. (n.d.). Verification of APL programs, Ph.D. thesis, Carnegie-Mellon University (to appear).
[12]
Goldstine, H. H.; and von Neumann, J. 1947. Planning and coding problems for an electronic computer instrument, in John von Neumann, Collected Works Vol. 5, Taub, A. H. (ed.), Pergamon Press, 1963, 80-235. The use of an assertion box on p. 92 shows a notion and concern for correctness at the time of the first computers.
[13]
Good, D. I. 1970. Toward a man-machine system for proving program correctness, Ph.D. thesis, University of Wisconsin, 1970. Also Computation Center Report TSN-11, University of Texas at Austin, June 1970.
[14]
Good, D.I.; and London, R. L. 1970. Computer interval arithmetic: Definition and proof of correct implementation. J. ACM 17, 10, October 1970, 603-612.
[15]
Good, D. I.; and Ragland, L. C. 1972. Nucleus - A language of provable programs, in Proceedings of SIGPLAN Symposium on Computer Program Test Methods, Prentice-Hall, 1972 (to appear). Nucleus, an invention of the authors, is an elementary statement language including declarations, parameterless procedures, and arrays.
[16]
Gorn, S. 1968. The identification of the computer and information sciences: Their fundamental semiotic concepts and relationships, Foundation of Language, 4, 1968, 339-372. The author's 1964 thinking that includes on pp. 362-364 the principle of command recursion (forerunner of inductive assertions) and the principle of monotony (a termination proof technique). References 3,4, and 10, dating back to 1959, also contain these terms. Presumably these papers by Gorn include the unnamed one cited by Floyd {1967, p. 19}.
[17]
Hoare, C. A. R. 1969. An axiomatic basis for computer programming, Comm. ACM, 12, 10, October 1969, 576-580, 583. The basics of Hoare's axiomatic system for (i) proving correctness of program text without transforming the text and (ii) defining program semantics. See also Hoare {1971a}.
[18]
Hoare, C. A. R. (1971a). Procedures and parameters: An axiomatic approach, in Symposium on Semantics of Algorithmic Languages, Engeler, E. (ed.) Springer Verlag, 1971, 102-116. Extends Hoare's axiomatic system to recursive procedures.
[19]
Hoare, C. A. R. 197lb. Proof of a program: FIND, Comm. ACM, 14, 1, January 1971, 39-45.
[20]
Hull, T. E.; Enright, W. H.; and Sedgwick, A. E. 1972. The correctness of numerical algorithms, in PAAP, 1972, 66-73.
[21]
Igarashi, S.; London, R. L.; and Luckham, D. C. 1972. Interactive program verification: A logical system and its implementation, Artificial Intelligence Memo, Stanford University (to appear).
[22]
Jones, C. B. 1972. Formal development of correct algorithms: An example based on Earley's recogniser, in PAAP, 1972, 150-169.
[23]
King, J. C. 1969. A program verifier, Ph.D. thesis, Carnegie-Mellon University, 1969.
[24]
King, J. C. 1971. A program verifier, IFIP Congress 71 Booklet TA-2, 142-146.
[25]
Lauer, P. 1971. Consistent formal theories of the semantics of programming languages, Ph.D. thesis, Queen's University of Belfast, 1971. Also IBM Laboratory Vienna Technical Report TR 25.121, November 1971.
[26]
Levitt, K. N. 1972. The application of program proving techniques to the proving of synchronization processes, Stanford Research Institute, May 1972.
[27]
London, R. L. 1970. Proof of algorithms: A new kind of certification (Certification of Algorithm 245 TREESORT 3), Comm. ACM, 13, 6, June 1970, 371-373.
[28]
London, R. L. 1971a. Correctness of two compilers for a Lisp subset, Artificial Intelligence Memo AIM-151, Stanford University, October 1971.
[29]
London, R. L. 1971b. Proof of "readers" and "writers", unpublished, November 1971.
[30]
London, R. L. 1972a. A correctness proof of the Fischer-Galler algorithm using inductive assertions, in Formal Semantics of Programming Languages, Rustin, R. (ed.), Prentice-Hall, 1972, 125-135.
[31]
London, R. L. 1972b. Correctness of a compiler for a Lisp subset, in PAAP, 1972, 121-127.
[32]
London, R. L. 1972c. Correctness of an operating system kernel, unpublished, February 1972.
[33]
Lyons, T.; and Bruno, J. 1971. An interactive system for program verification, in Proceedings of the Symposium on Computers and Automata, Polytechnic Institute of Brooklyn, April 1971. Also Electrical Engineering Department Technical Report No. 91, Princeton University, May 1971.
[34]
Manna, Z. 1969. The correctness of programs, J. Computer and System Sciences, 3, 2, May 1969, 119-127. A further formalization of the inductive assertion method.
[35]
Manna, Z.; Ness, S.; and Vuillemin, J. 1972. Inductive methods for proving properties of programs, in PAAP, 1972, 27-50.
[36]
Manna, Z; and Pnueli, A. 1970. Formalization of properties of functional programs, J. ACM, 17, 3, July 1970, 555-569. Extension of Manna {1969} to functional programs.
[37]
McCarthy, J. 1963. A basis for a mathematical theory of computation, in Computer Programming and Formal Systems, Braffort, P. and Hirschberg, D. (eds.), North Holland, 1963, 33-70. A pioneering paper which introduced recursion induction.
[38]
McCarthy, J.; and Painter, J. A. 1967. Correctness of a compiler for arithmetic expressions, in Proceedings of a Symposium in Applied Mathematics, Vol. 19—Mathematical Aspects of Computer Science, Schwartz, J. T. (ed.), 33-41.
[39]
Milner, R. 1972a. Implementation and applications of Scott's logic for computable functions, in PAAP, 1972, 1-6.
[40]
Milner, R. 1972b. Logic for computable functions: Description of a machine implementation, Artificial Intelligence Memo, Stanford University (to appear). The user manual for Milner's system.
[41]
Milner, R.; and Weyhrauch, R. W. 1972. Proving compiler correctness in a mechanized logic, in Machine Intelligence 7, Edinburgh University Press, 1972 (to appear).
[42]
Morris, J. H. 1972. A correctness proof using recursively defined functions, in Formal Semantics of Programming Languages, Rustin, R. (ed.), Prentice-Hall, 1972, 107-124.
[43]
Naur, P. 1966. Proof of algorithms by general snapshots, BIT, 6, 1966, 310-316. Suggests inductive assertions independently but less formally than Floyd {1967}.
[44]
PAAP 1972. Proceedings of an ACM Conference on Proving Assertions about Programs, SIGPLAN Notices, 7, 1, January 1972. Also SIGACT News, 14, January 1972.
[45]
Ragland, L. C. (n.d.). A verified program verifier, Ph.D. thesis, University of Texas at Austin (to appear).
[46]
Scott, D. 1970. Outline of a mathematical theory of computation, in Proceedings of the Fourth Annual Princeton Conference on Information Sciences and Systems, 1970. Contains Scott's logic, a subject under continued, active development.
[47]
Slagle, J. R.; and Norton, L. M. 1971. Experiments with an automatic theorem prover having partial ordering rules, Heuristics Laboratory, National Institutes of Health, 1971.
[48]
Turing, A. 1950. Checking a large routine, in Report of a Conference on High Speed Automatic Calculating - Machines, University Mathematical Laboratory, Cambridge, January 1950, 67-69. The first known proof of program correctness. The example is iterative factorial using a double loop since multiplication is non-primitive. The proof is essentially by what is now called inductive assertions.
[49]
Wang, Y. Y. (n.d.). A verification condition generator for Nucleus programs. M.S. thesis, University of Texas at Austin (to appear).
[50]
Weir, S. 1972. Macro-inference steps in proofs of program correctness. Department of Machine Intelligence Memorandum, University of Edinburgh (to appear).
[51]
Weyhrauch, R. W.; and Milner, R. 1972. Program semantics and correctness in a mechanized logic, in Proceedings of USA - Japan Computer Conference, Tokyo, October 1972 (to appear).
[52]
williamson, C. T.; and Maurer, W. D. 1971. Algorithm verification applied to the Todd-Coxeter algorithm, Electronics Research Laboratory Memorandum No. ERL-M317, University of California - Berkeley, December 1971.
[53]
Wirth, N. 1971a. The programming language Pascal, Acta Informatica, 1, 1971, 35-63.
[54]
Wirth, N. 1971b. Program development by stepwise refinement, Comm. ACM, 14, 4, April 1971, 221-227.
[55]
Yohe, J. M. 1970. Best possible floating point arithmetic, Mathematics Research Center Technical Summary Report No. 1054, University of Wisconsin, March 1970.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ACM '72: Proceedings of the ACM annual conference - Volume 1
August 1972
194 pages
ISBN:9781450374910
DOI:10.1145/800193
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 August 1972

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Algorithm proof
  2. Assertions
  3. Correctness
  4. Inductive assertions
  5. Program proving
  6. Proof
  7. Proof checker
  8. Proof methods
  9. Reliability
  10. Software reliability
  11. Survey
  12. Tutorial
  13. Verification
  14. Verifier

Qualifiers

  • Article

Conference

ACM '72
Sponsor:
August 1, 1972
Massachusetts, Boston, USA

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)17
  • Downloads (Last 6 weeks)3
Reflects downloads up to 10 Oct 2024

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media