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.
[1]
Zohar Manna,et al.
A Heuristic Approach to Program Verification
,
1973,
IJCAI.
[2]
H TAMBS-LYCHE.
Manna
,
1962,
Nordisk medicin.
[3]
Zohar Manna,et al.
Logical analysis of programs
,
1976,
CACM.
[4]
Ben Wegbreit,et al.
The synthesis of loop predicates
,
1974,
CACM.
[5]
L. Peter Deutsch.
An interactive program verifier
,
1973
.
[6]
Robert W. Floyd.
Toward Interactive Design of Correct Programs
,
1971,
IFIP Congress.
[7]
James C. King,et al.
Symbolic execution and program testing
,
1976,
CACM.
[8]
Gerald J. Sussman,et al.
A Computational Model of Skill Acquisition
,
1973
.