Program construction and verification
Program construction and verification
A calculus of refinements for program derivations
Acta Informatica
Predicate calculus and program semantics
Predicate calculus and program semantics
Strongest postcondition semantics as the formal basis for reverse engineering
Reverse engineering
Guarded commands, nondeterminacy and formal derivation of programs
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
Design of Well-Structured and Correct Programs
Design of Well-Structured and Correct Programs
Deriving Verification Conditions and Program Assertions to Support Software Inspection
APSEC '02 Proceedings of the Ninth Asia-Pacific Software Engineering Conference
Proving loop termination: Beyond the traditional method
Journal of Computational Methods in Sciences and Engineering
Hi-index | 0.00 |
This paper introduces a repeatable and constructive approach to the analysis of loop progress and termination conditions in imperative programs. It is applicable to all loops for which a variant function can be defined using only loop guard variables. The approach involves the algorithmic derivation of loop progress and termination conditions directly from the code itself. The derivation of these conditions has been automated in a prototype tool. The conditions yielded by the automated algorithms are useful for reasoning about correctness in verification based code inspections as well as for the documentation and assessment of program preconditions. Unlike existing formal approaches to termination investigation, which are reliant on the presence of formal specifications, this approach is applicable to undocumented programs as well as formally specified programs. We present the algorithms and formal methods implemented in a prototype tool for deriving loop progress and termination conditions and use the output generated by the tool to illustrate its use in supporting verification and termination defect correction.