Communications of the ACM
The synthesis of loop predicates
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
Automatic program verification I: a logical basis and its implementation.
Automatic program verification I: a logical basis and its implementation.
A program verifier
A heuristic approach to program verification
IJCAI'73 Proceedings of the 3rd international joint conference on Artificial intelligence
Program understanding: challenge for the 1990's
IBM Systems Journal
Journal of Symbolic Computation - Special issue on automatic programming
Communications of the ACM
A view of program verification
Proceedings of the international conference on Reliable software
An approach to efficient, fault tolerant programming
ACM SIGPLAN Notices
Using assertions to improve language translators
AFIPS '77 Proceedings of the June 13-16, 1977, national computer conference
Hi-index | 0.02 |
We present the germ of an idea for automatically correcting logical errors in programs by manipulating the invariants of the program. An invariant tree is defined, and we show how it can be used to change the program in order to guarantee correctness. Debugging could be incorporated into a verification system which would first try to prove the correctness of the program. If the attempt is unsuccessful, two alternative approaches are suggested and compared. In the first, we try directly to correct the invariants and - through these - the statements, taking the calculated risk of modifying an already correct program. In the second approach, we initially prove incorrectness, and only then try to correct the program, by invalidating this proof.