Abstract
“Program verification” is generally defined as the process of ascertaining and demonstrating that a program is correct, i.e., that a program satisfies a given set of specifications. The most common method of verifying a program is by
In practice today, a few programs are being proved correct but the most common method of program verification is still testing. Both methods are unreliable in different ways, but when combined, their complementary relationship can provide a high degree of assurance that programs are correct. The purpose of this paper is (1) to review the state of the art of these two approaches to program verification and the relationship between them, and (2) to suggest a number of ways in which program verification can be introduced into the computer science curriculum.
- 1 Burstall, R. M., "Program Proving as Simulation plus a little Induction", IFIPS 74 Proceedings, pp. 308-312.Google Scholar
- 2 Conway, R. W. and Gries, D., An Introduction to Programming, Winthrop, 1973.Google Scholar
- 3 Dahl, O. J., Dijkstra, E. W. and Hoare, C. A. R., Structured Programming, Academic, 1972. Google Scholar
Digital Library
- 4 Davis, P. J., "Fidelity in Mathematical Discourse", Am. Math. Mo. 79, 3, (March, 1972).Google Scholar
Cross Ref
- 5 Elspas, B., et. al., An Assessment of Techniques for Proving Program Correctness. Computing Surveys 4, 2 (June, 1972). Google Scholar
Digital Library
- 6 Floyd, R. W., Assigning Meanings to Programs. Symposium in Appl. Math., Vol. 19, 1967.Google Scholar
- 7 Goodenough, J. B. and Gerhart, S. L., "Toward a Theory of Test Data Selection", to be presented at Intl. Conf. on Software Reliability, April, 1975. Google Scholar
Digital Library
- 8 Gordon, G., System Simulation, Prentice-Hall, 1969 Google Scholar
Digital Library
- 9 Hetzel, W. C. (Ed), Program Test Methods, Prentice-Hall, 1972.Google Scholar
- 10 Hoare, C. A. R., An Axiomatic Basis for Computer Programming, CACM 12, 10 (Oct., 1969). Google Scholar
Digital Library
- 11 Knuth, D. E., The Art of Computer Programming, Vol. I., Addiston-Wesley, 1973. Google Scholar
Digital Library
- 12 Manna, Z., Ness, S. and Vuillemin. Inductive Methods for Proving Program Correctness', Proc. of an ACM Conferences on Proving Correctness of Programs, Jan. 1972. Google Scholar
Digital Library
- 13 Naur, P., Programming by Action Clusters, BIT 9, 3 (1969).Google Scholar
Cross Ref
- 14 Naur, P., Proof of Algorithms by General Snapshots, BIT 6 (1966).Google Scholar
- 15 Sites, R., ALGOL W reference manual. Stanford Report STAN-CS-71-230, February, 1972. Google Scholar
Digital Library
- 16 Wirth, N., Systematic Programming. Prentice-Hall, 1973. Google Scholar
Digital Library
Index Terms
Methods for teaching program verification
Recommendations
Methods for teaching program verification
SIGCSE '75: Proceedings of the fifth SIGCSE technical symposium on Computer science education“Program verification” is generally defined as the process of ascertaining and demonstrating that a program is correct, i.e., that a program satisfies a given set of specifications. The most common method of verifying a program is by testing, the ...
Formal Verification for C Program
Iterative abstraction refinement has emerged in the last few years as the leading approach to software model checking. We present an approach for automatically verifying C programs against safety specifications based on finite state machine. The ...
Lazy Abstraction for Higher-Order Program Verification
PPDP '18: Proceedings of the 20th International Symposium on Principles and Practice of Declarative ProgrammingThis paper proposes a lazy abstraction algorithm for verification of functional programs. The feature of the lazy abstraction method is that the predicate abstraction and the model checking are fused, and that abstractions for unreachable configurations ...






Comments