, Volume 16, Issue 6, pp 832–861 | Cite as

Current methods for proving program correctness

  • E. L. Yushchenko
  • I. V. Kasatkina


Operating System Artificial Intelligence System Theory Current Method Program Correctness 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Literature Cited

  1. 1.
    V. V. Bublik, “Generalized structural induction,” Kibernetika, No. 3, 60–61 (1977).Google Scholar
  2. 2.
    V. V. Bublik et al., “Interactive processing of data structures,” Kibernetika, No. 5, 13–18 (1978).Google Scholar
  3. 3.
    V. M. Glushkov, “Automata theory and formal transformations of microprograms,” Kibernetika, No. 5, 1–10 (1965).Google Scholar
  4. 4.
    V. M. Glushkov, E. L. Yushchenko, A. M. Dovgyalo, et al., “A typical interactive instruction system PEDAGOG with a service mode for learning programming languages. I, II,” in: Theory of Languages and Methods of Construction of Programming Systems [in Russian], Kiev (1972), pp. 71–97.Google Scholar
  5. 5.
    V. M. Glushkov, G. E. Tseitlin, and E. L. Yushchenko, Algebras, Languages, Programming [in Russian], Naukova Dumka, Kiev (1979).Google Scholar
  6. 6.
    V. M. Glushkov, Yu. V. Kapitonova, and A. A. Letichevskii, “Application of the method of formal technical specifications to program design for data structure processing,” Programmirovanie, No. 6, 31–42 (1978).Google Scholar
  7. 7.
    I. V. Kasatkina, “On proving program correctness in interactive instruction systems,” in: System Programming [in Russian], Kiev (1977), pp. 27–39.Google Scholar
  8. 8.
    I. V. Kasatkina, “On a method of semantic checking of program correctness in automatic instruction syssystems,” Preprint Inst. Kibern. Akad. Nauk UkrSSR No. 79-49, Kiev (1970).Google Scholar
  9. 9.
    I. V. Kasatkin, “An axiom system for correctness proving of COBOL programs,” in: Methods of Developing Mathematical Methods and Facilities in Computational Technology [in Russian], Kiev (1980), pp. 14–19.Google Scholar
  10. 10.
    E. L. Yushchenko et al., eds., COBOL: A Programmed Textbook [in Russian], Vishcha Shkola, Kiev (1978).Google Scholar
  11. 11.
    V. S. Kostyrko, “On correctness proving offor loops,” Kibernetika, No. 5, 55–58 (1977).Google Scholar
  12. 12.
    V. S. Kostyrko, “A method of proving program correctness,” Kibernetika, No. 1, 50–58 (1978).Google Scholar
  13. 13.
    S. S. Lavrov, “Methods of specifying the semantics of programming languages,” Programmirovanie, No. 6, 3–10 (1978).Google Scholar
  14. 14.
    A. A. Letichevskii, “Analysis of checking a propositional formula for contradiction,” in: Discrete Converters [in Russian], Kiev (1976), pp. 3–19.Google Scholar
  15. 15.
    A. A. Letichevskii, “One approach to program analysis,” Kibernetika, No. 6, 1–8 (1979).Google Scholar
  16. 16.
    A. A. Letichevskii and V. S. Kostyrko, “Program analysis on the MIR-2 computer,” Kibernetika, No. 6, 31–40 (1974).Google Scholar
  17. 17.
    V. A. Nepomnyashchii, “Checking the correctness of programs with arrays and files,” in: Proc. Soviet Symposium on Future Development of System and Theoretical Programming [in Russian], Novosibirsk (1978), pp. 89–92.Google Scholar
  18. 18.
    V. A. Nepomnyashchii and L. V. Chernobrod, “Checking program correctness on a computer,” in: Problems of Programming [in Russian], Novosibirsk (1976), pp. 65–81.Google Scholar
  19. 19.
    R. A. Plyushkyavichus, A. Yu. Plyushkyavichene, Yu. V. Sakalauskaite, and S. P. Yukina, “On program logics,” Kibernetika, No. 2, 12–19 (1979).Google Scholar
  20. 20.
    B. A. Trakhtenbrot, “On completeness of algorithmic logic,” Kibernetika, No. 2, 6–11 (1979).Google Scholar
  21. 21.
    L. V. Chernobrod, “Checking program correctness: termination of loops,” in: System and Theoretical Programming [in Russian], Novosibirsk (1974), pp. 99–110.Google Scholar
  22. 22.
    E. L. Yuschenko, L. P. Babenko, and R. D. Usenko, “Some aspects of automatic programming instruction,” in: Proc. 1st Soviet Symposium on Man-Machine Systems [in Russian], Moscow (1979), pp. 94–95.Google Scholar
  23. 23.
    K. R. Apt, “Equivalence of operational and denotational semantics for a fragment of PASCAL,” Proc. IFIP Congress,2, 8 (1978).Google Scholar
  24. 24.
    E. A. Ashcroft, “Mathematical logic applied to the semantics of computer programs,” Doctoral Dissertation, Imperial College, London (1978).Google Scholar
  25. 25.
    E. A. Ashcroft, “Proving assertions about parallel programs,” J. Comp. Syst. Sci.,10, No. 1, 53–67 (1975).Google Scholar
  26. 26.
    E. A. Ashcroft and Z. Manna, “Formalization of properties of parallel programs,” Machine Intelligence,6, 17–43 (1971).Google Scholar
  27. 27.
    R. S. Boyer and J. S. Moore, “Proving theorems about LISP functions,” J. ACM,22, No. 1, 129–144 (1975).Google Scholar
  28. 28.
    R. M. Burstall, “Proving properties of programs by structural induction,” in: Information Processing, North Holland, Amsterdam (1974), pp. 208–312.Google Scholar
  29. 29.
    R. M. Burstall, “Program proving as hand simulation with a little induction,” Comp. J.,12, No. 1, 41–48 (1969).Google Scholar
  30. 30.
    J. M. Cadiou, “Recursive definitions of partial functions and their computations,” Doctoral Dissertation, Stanford University (1972).Google Scholar
  31. 31.
    M. Calain, “Finding invariant assertions for proving programs,” Proc. Inter. Conf. on Reliable Software, 165–171, Los Angeles (1975).Google Scholar
  32. 32.
    M. Clint, “Program proving: coroutines,” Acta Informatica,2, 50–63 (1973).Google Scholar
  33. 33.
    M. Clint and C. A. R. Hoare, “Program proving: jumps and functions,” Acta Informatica,1, 214–224 (1972).Google Scholar
  34. 34.
    S. A. Cook, “Axiomatic and interpretive semantics of an ALGOL fragment,” Tech. Rep. 79, Dept. of Comp. Sci., University of Toronto (1975).Google Scholar
  35. 35.
    S. A. Cook, “Soundness and completeness of an axion system for program verification,” SIAM J. Comp.,7, No. 1, 70–90 (1978).Google Scholar
  36. 36.
    D. C. Cooper, “Programs for mechanical program verification,” Machine Intelligence,6, 43–63 (1971).Google Scholar
  37. 37.
    O. Dahl, É. Dijkstra, and C. Hoare, Structured Programming, Academic Press, New York (1972).Google Scholar
  38. 38.
    J. W. De Bakker and D. A. Scott, “A theory of programs,” IBM Seminar, Vienna, Unpublished notes.Google Scholar
  39. 39.
    B. Elspas, K. Levitt, R. Waldinger, and A. Waksman, “An assessment of techniques for proving program correctness,” ACM Comp. Surv.,4, 97–147 (1972).Google Scholar
  40. 40.
    R. W. Floyd, “Assigning meaning to programs,” Proc. Symp. Appl. Math.,19, 19–32 (1967).Google Scholar
  41. 41.
    S. German and B. Wegbreit, “Synthesizer of inductive assertions,” Proc. AFIPS Conf.,44, 54–160 (1975).Google Scholar
  42. 42.
    H. H. Goldstein and J. von Neumann, “Planning and coding problems for electronic computer instrument,” in: Collected Works of J. von Neumann, Vol. 5, New York (1965), pp. 80–235.Google Scholar
  43. 43.
    D. Harel, A. Pnueli, and J. Stavi, “A complete axiomatic system for proving deductions about recursive programs,” Proc. 9th Ann. ACM Symp. on Theory of Comp., 59–76, Boulder (1977).Google Scholar
  44. 44.
    C. A. R. Hoare, “An axiomatic basis for computer programming,” Comm. ACM,12, No. 10 (1969), pp. 576–580, 583.Google Scholar
  45. 45.
    C. A. R. Hoare, “Procedures and parameters: axiomatic approach,” Lecture Notes in Math.,188, 102–116 (1970).Google Scholar
  46. 46.
    C. A. R. Hoare, “Proof of program: FIND,” Comm. ACM,14, No. 1, 39–45 (1971).Google Scholar
  47. 47.
    C. A. R. Hoare, “Towards a theory of parallel programming,” in: Operational Systems Techniques, New York (1972).Google Scholar
  48. 48.
    C. A. R. Hoare and P. E. Lauer, “Consistent and complementary formal theories of the semantics of programming languages,” Acta Informatica,3, 135–153 (1974).Google Scholar
  49. 49.
    C. A. R. Hoare, “Axiomatic definition of the programming language PASCAL,” in: Programming Theory [in Russian], Novosibirsk (1972), pp. 11–36.Google Scholar
  50. 50.
    C. A. R. Hoare, “Parallel programming: an axiomatic approach,” Comp. Lang.,1, No. 2, 204–223 (1975).Google Scholar
  51. 51.
    S. Igarashi, R. London, and N. Luckham, “Automatic program verification I: A logical basis and its implementation,” Acta Informatica,4, 145–182 (1975).Google Scholar
  52. 52.
    S. Katz and Z. Manna, “A heuristic approach to program verification,” Proc. 3rd Intern. Joint Conf. on Art. Intel., 500–512, Stanford (1973).Google Scholar
  53. 53.
    S. Katz and Z. Manna, “Logical analysis of programs,” Comm. ACM,19, No. 4, 188–206, (1976).Google Scholar
  54. 54.
    R. Keller, “Formal verification of parallel programs,” Comm. ACM,19, No. 7, 335–351 (1976).Google Scholar
  55. 55.
    J. C. King, “A program verifier,” Information Processing,1, 234–249 (1972).Google Scholar
  56. 56.
    S. Kleene, Introduction to Meta-Mathematics, Van Nostrand, Princeton, New Jersey (1952).Google Scholar
  57. 57.
    D. E. Knuth, The Art of Computer Programming, Vol. I, Addison-Wesley, Reading, Massachusetts (1968).Google Scholar
  58. 58.
    F. Kröger, “A uniform logical basis for the description, specification, and verification of programs,” Proc. IFIP Congr.,2, 18.1–18.17 (1977).Google Scholar
  59. 59.
    R. London, “Proof of algorithms: A new kind of certification,” Commun. ACM,13, No. 6, 371–373 (1979).Google Scholar
  60. 60.
    Z. Manna, “The correctness of programs,” J. Comp. Syst. Sci.,3, No. 2, 119–127 (1969).Google Scholar
  61. 61.
    Z. Manna, “Mathematical theory of partial correctness,” J. Comp. Syst. Sci.,5, No. 3, 239–253 (1971).Google Scholar
  62. 62.
    Z. Manna, “Mathematical theory of computation,” McGraw-Hill, New York (1974).Google Scholar
  63. 63.
    Z. Manna and A. Pnueli, “Formalization of properties of functional programs,” J. ACM,17, No. 3, 555–569 (1970).Google Scholar
  64. 64.
    Z. Manna, R. Ness, and J. Vuillemin, “Inductive methods for proving properties of programs,” Comm. ACM,16, No. 8, 491–502 (1973).Google Scholar
  65. 65.
    Z. Manna and A. Pnueli, “Axiomatic approach to total correctness of programs,” Acta Informatica,3, No. 3, 243–263 (1974).Google Scholar
  66. 66.
    Z. Manna and R. Waldinger, “Is ‘sometimes’ sometimes better than ‘always’?,” Techn. Rep. STAN, CS 76-558, Stanford University (1976).Google Scholar
  67. 67.
    J. McCarthy, “Towards a mathematical science of computation,” Proc. ACM Conf. on Proving Assertions about Programs, 197–214, New Mexico (1972).Google Scholar
  68. 68.
    R. Milner, “Implementation and application of Scott's logic for computable functions,” Proc. ACM Conf. on Proving Assertions about Programs, 154–180, New Mexico (1972).Google Scholar
  69. 69.
    J. Misra, “Prospects and limitations of automatic assertion generation for LOOP-programs,” SIAM J. Comp.,6, No. 4, 93–110 (1977).Google Scholar
  70. 70.
    J. H. Morris, “Another recursive induction principle,” Commun. ACM,14, No. 5, 351–354 (1971).Google Scholar
  71. 71.
    P. Naur, “Proof of algorithms by general snapshots,” BIT,6, 310–316 (1966).Google Scholar
  72. 72.
    S. Owicki, “A consistent and complete deductive system for the verification of parallel programs,” Proc. 8th Ann. ACM Symp. on Theory of Comp., 211–224 (1976).Google Scholar
  73. 73.
    S. Owicki and D. Gries, “Verifying properties of parallel programs: An axiomatic approach,” Commun. ACM,19, No. 5, 279–285 (1976).Google Scholar
  74. 74.
    D. Park, “Fixpoint induction and proof of program properties,” Machine Intelligence,5, 59–78 (1969).Google Scholar
  75. 75.
    V. R. Pratt, “Semantical consideration of Floyd-Hoare logic,” Proc. 17th IEEE Symp. on Foundations of Comp. Sci., 314–321 (1976).Google Scholar
  76. 76.
    J. A. Robinson, “New directions in mechanical theorem proving,” Proc. IFIP Congr., 101–119 (1968).Google Scholar
  77. 77.
    Ph. Roussel, “Manuel de réfèrance et d'utilisation PROLOG,” Groupe d'Intellegence Artificiel, Université d'Aix-Marseille (1976).Google Scholar
  78. 78.
    D. Scott, “Outline of a mathematical theory of computation,” Proc. 4th Princeton Conf. on Inform. Sci. and Syst., 34–42, Princeton (1970).Google Scholar
  79. 79.
    N. Suzuki, “Verifying programs by algebraic and logical reduction,” Proc. Intern. Conf. on Reliable Software, 129–140, Los Angeles (1975).Google Scholar
  80. 80.
    M. H. van Emden, “Programming with resolution logic,” Research Rep. CS-75-30, University of Waterloo, Canada (1975).Google Scholar
  81. 81.
    J. Vuillemin, “Proof techniques for recursive programs,” Doctoral Dissertation, Stanford University (1973).Google Scholar
  82. 82.
    M. Wand, “A new incompleteness result for Hoare's system,” J. ACM,25, No. 1, 168–175 (1978).Google Scholar
  83. 83.
    R. J. Waldinger and K. N. Levitt, “Reasoning about programs,” Art. Intel.,5, No. 3, 235–315 (1974).Google Scholar
  84. 84.
    B. Wegbreit, “Heuristic methods for mechanically deriving inductive assertions,” Proc. 3rd Intern. Conf. on Art. Intel., 129–145, Stanford (1973).Google Scholar
  85. 85.
    N. Wirth, Systematic Programming: An Introduction, Prentice Hall, Englewood Cliffs, New Jersey (1973).Google Scholar
  86. 86.
    W. Wulf, R. London, and M. Show, “Abstraction and verification in ALPHARD: Introduction to language and methodology,” Research Rep., University of Southern California (1976).Google Scholar
  87. 87.
    A. Wung, “An axiomatic basis for proving total correctness of GOTO-programs,” BIT,16, 88–102 (1976).Google Scholar

Copyright information

© Plenum Publishing Corporation 1981

Authors and Affiliations

  • E. L. Yushchenko
  • I. V. Kasatkina

There are no affiliations available

Personalised recommendations