Theory of linear and integer programming
Theory of linear and integer programming
“A la Floyd” induction principles for proving inevitability
Algebraic methods in semantics
Combinatorial optimization: algorithms and complexity
Combinatorial optimization: algorithms and complexity
Termination detection in logic programs using argument sizes (extended abstract)
PODS '91 Proceedings of the tenth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Automated termination analysis for logic programs
Automated termination analysis for logic programs
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Discipline of Programming
Computers and Intractability; A Guide to the Theory of NP-Completeness
Computers and Intractability; A Guide to the Theory of NP-Completeness
Synthesis of Linear Ranking Functions
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Termination Analysis for Mercury
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
Practical Methods for Proving Program Termination
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Smoothed analysis of algorithms: Why the simplex algorithm usually takes polynomial time
Journal of the ACM (JACM)
LICS '04 Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science
Not necessarily closed convex polyhedra and the double description method
Formal Aspects of Computing
Precise widening operators for convex polyhedra
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Widening operators for powerset domains
International Journal on Software Tools for Technology Transfer (STTT) - A View from Formal Methods 2003 (pp 301-354); Special Section on Recent Advances in Hardware Verification (pp 355-447)
Recurrence with affine level mappings is p-time decidable for clp$({\mathbb r})$
Theory and Practice of Logic Programming
Proving Conditional Termination
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Theoretical Computer Science
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Exact join detection for convex polyhedra and other numerical abstractions
Computational Geometry: Theory and Applications
Weakly-relational shapes for numeric abstractions: improved algorithms and proofs of correctness
Formal Methods in System Design
Polynomial interpretations as a basis for termination analysis of logic programs
ICLP'05 Proceedings of the 21st international conference on Logic Programming
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
On termination of binary CLP programs
LOPSTR'04 Proceedings of the 14th international conference on Logic Based Program Synthesis and Transformation
Linear ranking with reachability
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Abstraction refinement for termination
SAS'05 Proceedings of the 12th international conference on Static Analysis
On the Termination of Integer Loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the linear ranking problem for integer linear-constraint loops
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eventual linear ranking functions
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
The classical technique for proving termination of a generic sequential computer program involves the synthesis of a ranking function for each loop of the program. Linear ranking functions are particularly interesting because many terminating loops admit one and algorithms exist to automatically synthesize it. In this paper we present two such algorithms: one based on work dated 1991 by Sohn and Van Gelder; the other, due to Podelski and Rybalchenko, dated 2004. Remarkably, while the two algorithms will synthesize a linear ranking function under exactly the same set of conditions, the former is mostly unknown to the community of termination analysis and its general applicability has never been put forward before the present paper. In this paper we thoroughly justify both algorithms, we prove their correctness, we compare their worst-case complexity and experimentally evaluate their efficiency, and we present an open-source implementation of them that will make it very easy to include termination-analysis capabilities in automatic program verifiers.