Termination Analysis with Compositional Transition Invariants

Modern termination provers rely on a safety checker to construct disjunctively well-founded transition invariants This safety check is known to be the bottleneck of the procedure We present an alternative algorithm that uses a light-weight check based on transitivity of ranking relations to prove program termination We provide an experimental evaluation over a set of 87 Windows drivers, and demonstrate that our algorithm is often able to conclude termination by examining only a small fraction of the program As a consequence, our algorithm is able to outperform known approaches by multiple orders of magnitude.

[1]  A. Turing On Computable Numbers, with an Application to the Entscheidungsproblem. , 1937 .

[2]  Pierre Lescanne,et al.  Algebraic and Logic Programming , 1988, Lecture Notes in Computer Science.

[3]  A. M. Turing,et al.  Checking a large routine , 1989 .

[4]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[5]  Michael Codish,et al.  A Semantic Basis for Termination Analysis of Logic Programs and its Realization Using Symbolic Norm Constraints , 1997, APPIA-GULP-PRODE.

[6]  Henny B. Sipma,et al.  Synthesis of Linear Ranking Functions , 2001, TACAS.

[7]  Neil D. Jones,et al.  The size-change principle for program termination , 2001, POPL '01.

[8]  Henny B. Sipma,et al.  Practical Methods for Proving Program Termination , 2002, CAV.

[9]  Viktor Schuppan,et al.  Liveness Checking as Safety Checking , 2002, FMICS.

[10]  Andreas Podelski,et al.  Transition invariants , 2004, Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004..

[11]  Andreas Podelski,et al.  A Complete Method for the Synthesis of Linear Ranking Functions , 2004, VMCAI.

[12]  Daniel Kroening,et al.  A Tool for Checking ANSI-C Programs , 2004, TACAS.

[13]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[14]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[15]  Henny B. Sipma,et al.  Linear Ranking with Reachability , 2005, CAV.

[16]  Andreas Podelski,et al.  Abstraction Refinement for Termination , 2005, SAS.

[17]  Jürgen Giesl,et al.  The size-change principle and dependency pairs for termination of term rewriting , 2005, Applicable Algebra in Engineering, Communication and Computing.

[18]  Andreas Podelski,et al.  Termination proofs for systems code , 2006, PLDI '06.

[19]  Peter W. O'Hearn,et al.  Variance analyses from invariance analyses , 2007, POPL '07.

[20]  Andreas Podelski,et al.  ARMC: The Logical Choice for Software Model Checking with Abstraction Refinement , 2007, PADL.

[21]  Sumit Gulwani,et al.  Proving Conditional Termination , 2008, CAV.

[22]  Daniel Kroening,et al.  Loop Summarization Using Abstract Transformers , 2008, ATVA.

[23]  Mohamed Nassim Seghir,et al.  A Lightweight Approach for Loop Summarization , 2011, ATVA.