An automata-theoretic approach to linear temporal logic
Proceedings of the VIII Banff Higher order workshop conference on Logics for concurrency : structure versus automata: structure versus automata
Proving termination with multiset orderings
Communications of the ACM
The size-change principle for program termination
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction to Algorithms
General size-change termination and lexicographic descent
The essence of computation
Program termination analysis in polynomial time
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the complexity of omega -automata
SFCS '88 Proceedings of the 29th Annual Symposium on Foundations of Computer Science
Size-change termination for term rewriting
RTA'03 Proceedings of the 14th international conference on Rewriting techniques and applications
Testing for termination with monotonicity constraints
ICLP'05 Proceedings of the 21st international conference on Logic Programming
Termination analysis with calling context graphs
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Observations on determinization of büchi automata
CIAA'05 Proceedings of the 10th international conference on Implementation and Application of Automata
Size-change termination with difference constraints
ACM Transactions on Programming Languages and Systems (TOPLAS)
Size-Change Termination, Monotonicity Constraints and Ranking Functions
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Lazy abstraction for size-change termination
LPAR'10 Proceedings of the 17th international conference on Logic for programming, artificial intelligence, and reasoning
Hi-index | 0.00 |
This article explains how to construct a ranking function for any program that is proved terminating by size-change analysis. The “principle of size-change termination” for a first-order functional language with well-ordered data is intuitive: A program terminates on all inputs, if every infinite call sequence (following program control flow) would imply an infinite descent in some data values. Size-change analysis is based on information associated with the subject program's call-sites. This information indicates, for each call-site, strict or weak data decreases observed as a computation traverses the call-site. The set DESC of call-site sequences for which the size-changes imply infinite descent is ω-regular, as is the set FLOW of infinite call-site sequences following the program flowchart. If FLOW ⊆ DESC (a decidable problem), every infinite call sequence would imply infinite descent in a well-ordering—an impossibility—so the program must terminate. This analysis accounts for termination arguments applicable to different call-site sequences, without indicating a ranking function for the program's termination. In this article, it is explained how one can be constructed whenever size-change analysis succeeds. The constructed function has an unexpectedly simple form; it is expressed using only min, max, and lexicographic tuples of parameters and constants. In principle, such functions can be tested to determine whether size-change analysis will be successful. As a corollary, if a program verified as terminating performs only multiply recursive operations, the function that it computes is multiply recursive. The ranking function construction is connected with the determinization of the Büchi automaton for DESC. While the result is not practical, it is of value in addressing the scope of size-change reasoning. This reasoning has been applied broadly, in the analysis of functional and logic programs, as well as term rewrite systems.