Skip to main content
Log in

Practical methods of program verification

  • Published:
Cybernetics Aims and scope

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Literature Cited

  1. R. Anderson, Proving Program Correctness [Russian translation], Mir, Moscow (1982).

    Google Scholar 

  2. E. Dijkstra, The Science of Programming [Russian translation], Mir, Moscow (1978).

    Google Scholar 

  3. S. Alagic and M. A. Arbib, The Design of Well-Structured and Correct Programs, Springer, Berlin (1978).

    Google Scholar 

  4. R. Bird, Programs and Machines, John Wiley, New York (1976).

    Google Scholar 

  5. Z. Manna, Mathematical Theory of Computation, McGraw-Hill, New York (1974).

    Google Scholar 

  6. R. A. Plyushkyavichus, A. Yu. Plyushkyavichene, K. K. Gyachas et al., “On program verification,” Proceedings of the All-Union Conf. on Methods of Mathematical Logic in Artificial Intelligence Problems and Systematic Programming [in Russian], Inst. Mat. Kibern. Akad. Nauk LitSSR, Vil'nyus (1980), p. 1, pp. 34–56.

    Google Scholar 

  7. E. L. Yushchenko and I. V. Kasatkina, “Modern methods of proving program correctness,” Kibernetika, No. 37-62 (1980).

  8. S. L. Gerhart, “Program verification in the 1980's,” in: Proc. Conf. on Computing in the 1980's (Portland 1978), New York; IEEE (1978), pp. 80–89.

    Google Scholar 

  9. R. L. London, “A view of program verification,” Sigplan Notices,10, No. 6, 534 (1975).

    Google Scholar 

  10. Z. Manna and R. Waldinger, “The logic of computer programming,” IEEE Trans. Software Eng., 4, No. 3, 199 (1978).

    Google Scholar 

  11. J. T. Schwartz, A. Survey of Program Proof Technology, Techn. Rep., Comput. Sci. Dept., New York Univ., No. 001, New York (1978).

  12. J. C. King, “Program correctness: on inductive assertion methods,” IEEE Trans. Software Eng.,6, No. 6, 465 (1980).

    Google Scholar 

  13. J. H. Morris and B. Wegbreit, “Subgoal induction,” Commun. ACM,20, No. 4, 209 (1977).

    Google Scholar 

  14. D. C. Luckham and N. Suzuki, “Proof of termination within a weak logic of programs,” Acta Inf.,8, No. 1, 21 (1977).

    Google Scholar 

  15. D. Gries, “Is sometimes ever better than always?” Lect. Notes Comput. Sci.,69, 113 (1978).

    Google Scholar 

  16. C. A. R. Hoare and N. Wirth, “An axiomatic definition of the programming language PASCAL,” Acta Inf.,2, No. 4, 335 (1973).

    Google Scholar 

  17. V. A. Nepomnyashchii, “Verification of file processing programs in PASCAL,” Programmirovanie, No. 2, 34 (1981).

    Google Scholar 

  18. S. Igarashi, R. L. London, and D. C. Luckham, “Automatic program verification I: A logical basis and its implementation,” Acta Inf.,4, No. 2, 145 (1975).

    Google Scholar 

  19. D. C. Luckham and N. Suzuki, “Verification of array, record, and pointer operations in PASCAL,” ACM Trans. Program. Lang. Syst.,1, No. 2, 226 (1979).

    Google Scholar 

  20. R. L. Schwartz, “An axiomatic treatment of ALGOL-68 routines,” Lect. Notes Comput. Sci.,71, 530 (1979).

    Google Scholar 

  21. D. C. Oppen and S. A. Cook, “Proving assertions about programs that manipulate data structures,” in: Proc. 7th Ann. ACM Symp. on Theory of Comput., ACM, New York (1975), pp. 107–116.

  22. L. Robinson and K. N. Levitt, “Proff techniques for hierarchically structured programs,” Commun. ACM,20, No. 4, 271 (1977).

    Google Scholar 

  23. S. Owicki and D. Gries, “An axiomatic proof technique for parallel programs I,” Acta Inf.,6, No. 4, 319 (1976).

    Google Scholar 

  24. S. Owicki and D. Gries, “Verifying properties of parallel programs: An axiomatic approach,” Commun. ACM,19, No. 5, 279 (1976).

    Google Scholar 

  25. L. Flon and N. Suzuki, “The total correctness of parallel programs,” SIAM J. Comput.,10, No. 2, 227 (1981).

    Google Scholar 

  26. L. Lamport, “The ‘Hoare logic’ of concurrent programs,” Acta Inf.,14, No. 1, 21 (1980).

    Google Scholar 

  27. R. J. Lipton, “Reduction: a method of proving properties of parallel programs,” Commun. ACM,18, No. 12, 717 (1975).

    Google Scholar 

  28. V. A. Nepomnyashchii, “Proving the correctness of linear algebra programs,” Programmirovanie, No. 4, 63 (1982).

    Google Scholar 

  29. V. A. Nepomnyaschii and T. G. Churina, “Verification of array sorting programs,” in: Programming Languages and Systems [in Russian], VTs Akad. Nauk SSSR, Novosibirsk (1979), pp. 21–36.

    Google Scholar 

  30. S. K. Basu, “A note on synthesis of inductive assertions,” IEEE Trans. Software Eng.,6, No. 1, 32 (1980).

    Google Scholar 

  31. B. Wegbreit, “Complexity of synthesizing inductive assertions,” J. ACM,24, No. 3, 504 (1974).

    Google Scholar 

  32. M. Caplain, “Finding invariant assertions for proving programs,” Sigplan Notices,10, No. 6, 165 (1975).

    Google Scholar 

  33. H. A. Ellozy, “The determination of loop invariants for programs with arrays,” IEEE Trans. Software Eng.,7, No. 2, 197 (1981).

    Google Scholar 

  34. S. Katz and Z. Manna, “Logical analysis of programs,” Commun. ACM,19, No. 4, 188 (1976).

    Google Scholar 

  35. B. Wegbreit, “The synthesis of loop predicates,” Commun. ACM,17, No. 2, 102 (1974).

    Google Scholar 

  36. S. L. Krivoi, “An algorithm for finding invariant relations in programs,” Kibernetika, No. 5, 12 (1981).

    Google Scholar 

  37. A. A. Letichevskii, “On an approach to program analysis,” Kibernetika, No. 6, 1 (1979).

    Google Scholar 

  38. V. K. Sabel'fel'd, “Polynomial estimation of the complexity of identifying logical term equivalence, Dokl. Akad. Nauk SSSR,249, No. 4, 793 (1979).

    Google Scholar 

  39. P. Cousot and N. Halbwachs, “Automatic discovery of linear restraints among variables of a program,” in: Proc. Fifth Ann. ACM Symp. on Principles of Program. Lang., ACM, New York (1978), pp. 84–96.

  40. N. Dershowitz and Z. Manna, “Inference rules for program annotation,” IEEE Trans. Software Eng.,7, No. 2, 207 (1981).

    Google Scholar 

  41. G. S. Tseitin, “Certain characteristics of a language for a programming system verifying proofs,” in: Theory of Programming, Proc. of a Symposium [in Russian], VTs Sib. Otd. Akad. Nauk SSSR, Novosibirsk, Part 2 (1972), pp. 234–249.

    Google Scholar 

  42. M. Moriconi and R. L. Schwartz, “Automatic construction of verification-condition generators from Hoare logics,” Lect. Notes Comput. Sci.,115, 363 (1981).

    Google Scholar 

  43. V. S. Kostyrko, “Proving the correctness of “for” loop operators,” Kibernetika, No. 5, 55 (1977).

    Google Scholar 

  44. S. K. Basu and J. Misra, “Some classes of naturally provable programs,” in: Proc. 2nd Intern. Conf. on Software Eng. (San Francisco, 1976), IEEE, New York (1976), pp. 400–406.

    Google Scholar 

  45. P. Mateti, “A decision procedure for the correctness of a class of programs,” J. ACM,28, No. 2, 215 (1981).

    Google Scholar 

  46. N. Suzuki and D. Jefferson, “Verification decidability of Presburger array programs,” J. ACM,27, No. 1, 191 (1980).

    Google Scholar 

  47. R. E. Shostak, “A practical decision procedure for arithmetic with function symbols,” J. ACM,26, No. 2, 351 (1979).

    Google Scholar 

  48. D. C. Oppen, “Reasoning about recursively defined data structures,” J. ACM,27, No. 3, 403 (1980).

    Google Scholar 

  49. C. G. Nelson and D. C. Oppen, “Simplification by cooperating decision procedures,” ACM Trans. Progr. Lang. Syst.,1, No. 2, 245 (1979).

    Google Scholar 

  50. D. E. Knuth and P. B. Bendix, “Simple word problems in universal algebra,” in: Computational Problems in Abstract Algebras, Pergamon Press, New York (1970), pp. 263–297.

    Google Scholar 

  51. G. E. Peterson and M. E. Stickel, “Complete sets of reductions for some equational theories,” J. ACM,28, No. 2, 233 (1981).

    Google Scholar 

  52. J. C. King, “A program verifier,” in: Proc. IFIP Congress (Ljubljana 1971), North-Holland, Amsterdam (1971), pp. 142–146.

    Google Scholar 

  53. A. A. Letichevskii and V. S. Kostyrko, “On the application of an MIR-2 computer for program analysis,” Kibernetika, No. 6, 31 (1974).

    Google Scholar 

  54. L. P. Deutsch, An Interactive Program Verifier, Dr. Diss., University of California, Berkeley (1973).

    Google Scholar 

  55. R. J. Waldinger and K. N. Levitt, “Reasoning about programs,” Artificial Intelligence,5, No. 3, 235 (1974).

    Google Scholar 

  56. S. M. German and B. Wegbreit, “A synthesizer of inductive assertions,” Trans. Software Eng.,1, No. 1, 68 (1975).

    Google Scholar 

  57. M. Tamir, “ADI: Automatic derivation of invariants,” Trans. Software Eng.,6, No. 1, 40 (1980).

    Google Scholar 

  58. V. A. Nepomnyashchii and L. V. Chernobrod, “Testing program correctness with computers,” in: Problems of Programming [in Russian], VTs Sib. Otd. Akad. Nauk SSSR, Novosibirsk (1976), pp. 63–80.

    Google Scholar 

  59. D. I. Good, R. L. London, and W. W. Bledsoe, “An interactive program verification system,” IEEE Trans. Software Eng.,1, No. 1, 59 (1975).

    Google Scholar 

  60. J. Hvorecky, “The system for proving of correctness of programs,” in: Proc. of 1st Symp. on Analysis and Synthesis of Algorithms (Smolenice 1977), Veda, Broatislava (1977), pp. 82–88.

    Google Scholar 

  61. D. C. Luckham, “Program verification and verification-oriented programming,” in: Proc. IFIP Congress (Toronto 1977), North-Holland, Amsterdam (1977), pp. 783–794.

    Google Scholar 

  62. S. Scholz and O. Herrlich, “Bemerkungen zur Generierung von Verificationsbendingungen in PASKAL Programmen,” Weiterbildungszentr. Math. Kybern. und Rechentechn., Sekt. Math., Dresden, No. 3, 71 (1977).

    Google Scholar 

  63. N. Suzuki, Automatic Verification of Programs with Complex Data Structures. Techn. Rep., Comput. Sci. Dept. Stanford Univ., No. 552, Stanford (1976).

  64. S. L. Gerhart et al., “An overview of AFFIRM: a specification and verification system,” in: Proc. Congress IFIP (Tokyo, Melbourn 1980), North-Holland, Amsterdam (1980), pp. 343–347.

    Google Scholar 

  65. D. R. Musser, “Abstract data type specification in the AFFIRM system,” IEEE Trans. Software Eng.,6, No. 1, 24 (1980).

  66. V. R. Pratt, “On specifying verifiers,” in: Proc. 7th Ann. ACM Symp. on Principles of Progr. Lang., (Las Vegas 1980), ACM, New York, (1980), pp. 106–116.

    Google Scholar 

  67. J. Misra, “An exercise in program explanation,” ACM Trans. Program. Lang. Syst.,3, No. 1, 104 (1981).

    Google Scholar 

  68. Z. Manna and R. Waldinger, “Is sometimes sometimes better than always? Intermittent assertions in proving program correctness,” Commun. ACM,21, No. 2, 159 (1978).

    Google Scholar 

  69. L. Lamport, “On the proof of correctness of a calendar program,” Commun. ACM,22, No. 10, 554 (1979).

    Google Scholar 

  70. W. Polak, “An exercise in automatic program verification,” IEEE Trans. Software Eng.,5, No. 5, 453 (1979).

    Google Scholar 

  71. V. S. Kostyrko, “On the analysis of computational programs,” in: Methodology and Practice of the Development of Automatic Quality Control [in Russian], Inst. Kibern. Akad. Nauk USSR, Kiev (1978), pp. 38–49.

    Google Scholar 

  72. T. E. Hull, W. H. Enright, and A. E. Sedgwick, “The correctness of numerical algorithms,” Sigplan Notices,7, No. 1, 66 (1972).

    Google Scholar 

  73. D. Gries, “An illustration of current ideas on the derivation of correctness proofs and correct programs,” IEEE Trans. Software Eng.,2, No. 4, 238 (1976).

    Google Scholar 

  74. D. Gries, “The Schorr-Waite graph making algorithm,” Acta Inf.,11, No. 3, 223 (1979).

    Google Scholar 

  75. C. H. Corell, “Proving program correct through refinement,” Artificial Intelligence,9, No. 2, 211 (1978).

    Google Scholar 

  76. A. A. Letichevskii, “Analysis of a program checking inconsistencies in a propositional formula,” in: Discrete Transformers [in Russian], Inst. Kibern. Akad. Nauk USSR, Kiev (1976), pp. 3–19.

    Google Scholar 

  77. F. W. Henke and D. C. Luckham, “A methodology for verifying programs,” Sigplan Notices,10, No. 6, 156 (1975).

    Google Scholar 

  78. S. L. Gerhart and L. Yelowitz, “Control structure abstractions of the backtracking technique,” IEEE Trans. Software Eng.,2, No. 4, 285 (1976).

    Google Scholar 

  79. V. A. Nepomnyashchii and A. A. Sulimov, “On one approach to translator specification and verification,” Programmirovanie, No. 4, 51 (1983).

    Google Scholar 

  80. P. Deransart, “Proof by semantic attributes of a LISP compiler,” Computer J.,22, No. 3, 240 (1979).

    Google Scholar 

  81. R. L. London, “Correctness of a compiler for a LISP subset,” Sigplan Notices,7, No. 1, 121 (1972).

    Google Scholar 

  82. W. Polak, “Compiler specification and verification,” Lect. Notes Comput. Sci.,124, 269 (1981).

    Google Scholar 

  83. L. Yelowitz, “Specifications, refinement, and proof of a macroprocessor,” in: Proc. Symp. Comput. Software Eng., New York (1976), Vol. 24, pp. 251–266.

  84. L. Lamport, “The specification and proof of correctness of interactive programs,” Lect. Notes Comput. Sci.,75, 474 (1979).

    Google Scholar 

  85. A. Birman and W. H. Joyner, “A problem-reduction approach to proving simulation between programs,” IEEE Trans. Software Eng.,2, No. 2, 87 (1976).

    Google Scholar 

  86. D. A. Patterson, “An experiment in high-level language microprogramming and verification,” Commun. ACM,24, No. 10, 699 (1981).

    Google Scholar 

  87. E. A. Ashcroft, “Proving assertions about parallel programs,” J. Comput. System Sci.,10, No. 1, 110 (1975).

    Google Scholar 

  88. S. Owicki, “Verifying concurrent programs with shared data classes,” in: Proc. IFIP Working Conf. on Formal Description of Prog. Concepts, North-Holland, Amsterdam, (1978), pp. 279–299.

    Google Scholar 

  89. R. A. Karp and D. C. Luckham, “Verification of fairness in an implementation of monitors,” in: Proc. 2nd Intern. Conf. on Software Engrg. (San Francisco (1976)), IEEE, New York (1976), pp. 40–46.

    Google Scholar 

  90. N. Francez, “Application of a method for analysis of cyclic programs,” IEEE Trans. Software Eng.,4, No. 5, 371 (1978).

    Google Scholar 

  91. J. V. Phillips and T. H. Bredt, “Design and verification of realtime systems,” in: Proc. 2nd Intern. Conf. on Software Eng. (San Francisco 1976), IEEE, New York, (1976), pp. 124–131.

    Google Scholar 

  92. S. L. Gerhart and L. Yelowitz, “Observations of fallibility in applications of modern programming methodologies,” IEEE Trans. Software Eng.,2, No. 3, 195 (1976).

    Google Scholar 

  93. R. A. De Millo, R. J. Lipton, and A. J. Perlis, “Social processes and proofs of theorems and programs,” Commun. ACM,22, No. 5, 271 (1979).

    Google Scholar 

  94. E. W. Dijkstra, “On a political pamphlet from the middle ages,” Software Eng. Notes,3, No. 2, 14 (1978).

    Google Scholar 

  95. V. A. Nepomnyaschii and V. K. Sabel'fel'd, “Transformation synthesis of correct programs,” in: Optimization and Transformation of Programs (Materials of All-Union Seminar) [in Russian], VTs Sib. Otd. Akad. Nauk SSSR, Novosibirsk (1983), part 2, pp. 99–118.

    Google Scholar 

Download references

Authors

Additional information

Translated from Kibernetika, No. 2, pp. 21–28, 43, March–April, 1984.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Nepomnyashchii, V.A. Practical methods of program verification. Cybern Syst Anal 20, 193–203 (1984). https://doi.org/10.1007/BF01069174

Download citation

  • Received:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01069174

Keywords

Navigation