The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Correctness-preserving program transformations
POPL '75 Proceedings of the 2nd ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
A view of program verification
Proceedings of the international conference on Reliable software
Non-standard algorithmic and dynamic logic
Journal of Symbolic Computation
IEEE Transactions on Software Engineering - Special issue: best papers of the sixth international workshop on Petri nets and performance models (PNPM'95)
Some Properties of Predicate Transformers
Journal of the ACM (JACM)
Is Sometimes Ever Better Than Always?
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proving Liveness Properties of Concurrent Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Weaker Precondition for Loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proving termination with multiset orderings
Communications of the ACM
"Sometime" is sometimes "not never": on the temporal logic of programs
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A case for teaching program verification: Its importance in the CS curriculum
SIGCSE '83 Proceedings of the fourteenth SIGCSE technical symposium on Computer science education
ICSE '84 Proceedings of the 7th international conference on Software engineering
Tutorial session 3B: Prospects for program verification
ICSE '78 Proceedings of the 3rd international conference on Software engineering
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Temporal reasoning and termination of programs
IJCAI'83 Proceedings of the Eighth international joint conference on Artificial intelligence - Volume 2
Hi-index | 48.24 |
This paper explores a technique for proving the correctness and termination of programs simultaneously. This approach, the intermittent-assertion method, involves documenting the program with assertions that must be true at some time when control passes through the corresponding point, but that need not be true every time. The method, introduced by Burstall, promises to provide a valuable complement to the more conventional methods.The intermittent-assertion method is presented with a number of examples of correctness and termination proofs. Some of these proofs are markedly simpler than their conventional counterparts. On the other hand, it is shown that a proof of correctness or termination by any of the conventional techniques can be rephrased directly as a proof using intermittent assertions. Finally, it is shown how the intermittent-assertion method can be applied to prove the validity of program transformations and the correctness of continuously operating programs.