Better Termination Proving through Cooperation

One of the difficulties of proving program termination is managing the subtle interplay between the finding of a termination argument and the finding of the argument's supporting invariant. In this paper we propose a new mechanism that facilitates better cooperation between these two types of reasoning. In an experimental evaluation we find that our new method leads to dramatic performance improvements.

[1]  William H. Press,et al.  Numerical Recipes in FORTRAN - The Art of Scientific Computing, 2nd Edition , 1987 .

[2]  Christof Löding,et al.  Degrees of Lookahead in Context-free Infinite Games , 2011, CSL.

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

[4]  Bernhard Rumpe,et al.  MontiArc - Architectural Modeling of Interactive Distributed and Cyber-Physical Systems , 2014, ArXiv.

[5]  Moshe Y. Vardi,et al.  Temporal property verification as a program analysis task , 2012, Formal Methods Syst. Des..

[6]  Peter Lee,et al.  Automatic numeric abstractions for heap-manipulating programs , 2010, POPL '10.

[7]  Florian Zuleger,et al.  Ramsey vs. Lexicographic Termination Proving , 2013, TACAS.

[8]  Shmuel Zaks,et al.  The Structure of the Intersection of Tolerance and Cocomparability Graphs , 2010 .

[9]  Thomas A. Henzinger,et al.  Software Verification with BLAST , 2003, SPIN.

[10]  Larry Wos,et al.  What Is Automated Reasoning? , 1987, J. Autom. Reason..

[11]  Jürgen Giesl,et al.  Termination of term rewriting using dependency pairs , 2000, Theor. Comput. Sci..

[12]  Nachum Dershowitz,et al.  Termination of Rewriting , 1987, J. Symb. Comput..

[13]  Jürgen Giesl,et al.  A Dependency Pair Framework for Innermost Complexity Analysis of Term Rewrite Systems , 2011, CADE.

[14]  Joost-Pieter Katoen,et al.  A Local Greibach Normal Form for Hyperedge Replacement Grammars , 2011, LATA.

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

[16]  Andre Egners,et al.  Hackers in Your Pocket: A Survey of Smartphone Security Across Platforms , 2012 .

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

[18]  Jürgen Giesl,et al.  Lazy Abstraction for Size-Change Termination , 2010, LPAR.

[19]  Uwe Naumann,et al.  Algorithmic Differentiation of a Complex C++ Code with Underlying Libraries , 2013, ICCS.

[20]  Daniel Kroening,et al.  Loop Summarization and Termination Analysis , 2011, TACAS.

[21]  Carsten Sinz,et al.  LLBMC: Bounded Model Checking of C and C++ Programs Using a Compiler IR , 2012, VSTTE.

[22]  Marsha Chechik,et al.  Whale: An Interpolation-Based Algorithm for Inter-procedural Verification , 2012, VMCAI.

[23]  Daniel Kroening,et al.  SATABS: SAT-Based Predicate Abstraction for ANSI-C , 2005, TACAS.

[24]  John P. Gallagher,et al.  Termination analysis of logic programs through combination of type-based norms , 2007, TOPL.

[25]  Jürgen Giesl,et al.  Automated Detection of Non-termination and NullPointerExceptions for Java Bytecode , 2011, FoVeOOS.

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

[27]  Alfons Geser,et al.  Relative Termination , 1990 .

[28]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

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

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

[31]  Kenneth L. McMillan,et al.  Lazy Abstraction with Interpolants , 2006, CAV.

[32]  Nao Hirokawa,et al.  Automating the Dependency Pair Method , 2005, CADE.

[33]  Jürgen Giesl,et al.  Automatic Termination Proofs in the Dependency Pair Framework , 2006, IJCAR.

[34]  Bertrand Jeannet,et al.  Apron: A Library of Numerical Abstract Domains for Static Analysis , 2009, CAV.

[35]  U. Naumann,et al.  Algorithmic Differentiation of Numerical Methods : Tangent-Linear and Adjoint Direct Solvers for Systems of Linear Equations , 2012 .

[36]  Jürgen Giesl,et al.  Automated Termination Proofs for Java Programs with Cyclic Data , 2012, CAV.

[37]  Christian von Essen,et al.  Automated Termination Analysis of Java Bytecode by Term Rewriting , 2010, RTA.

[38]  N. S. Barnett,et al.  Private communication , 1969 .

[39]  W. Press,et al.  Numerical Recipes: The Art of Scientific Computing , 1987 .

[40]  J. Schwartz Mathematical Aspects of Computer Science , 1967 .

[41]  Bernhard Rumpe,et al.  An Operational Semantics for Activity Diagrams using SMV , 2014, ArXiv.

[42]  George B. Mertzios,et al.  A New Intersection Model for Multitolerance Graphs , Hierarchy , and Efficient Algorithms , 2010 .

[43]  Roman Rabinovich,et al.  Solving Muller Games via Safety Games ⋆ , 2011 .

[44]  Robert W. Floyd,et al.  Assigning meaning to programs , 1967 .

[45]  Sriram K. Rajamani,et al.  The SLAM Toolkit , 2001, CAV.

[46]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.

[47]  Henny B. Sipma,et al.  The Polyranking Principle , 2005, ICALP.

[48]  Deepak Kapur,et al.  Termination Analysis of C Programs Using Compiler Intermediate Languages , 2011, RTA.

[49]  William R. Harris,et al.  Alternation for Termination , 2010, SAS.

[50]  Andrey Rybalchenko,et al.  Synthesizing software verifiers from proof rules , 2012, PLDI.

[51]  Antoine Mid The Octagon Abstract Domain , 2001 .

[52]  William H. Press,et al.  Book-Review - Numerical Recipes in Pascal - the Art of Scientific Computing , 1989 .

[53]  Eric Koskinen,et al.  Making prophecies with decision predicates , 2011, POPL '11.

[54]  Fabian Emmes,et al.  Automated Complexity Analysis for Prolog by Term Rewriting ∗ , 2003 .

[55]  Antoine Miné,et al.  The octagon abstract domain , 2001, High. Order Symb. Comput..

[56]  Jürgen Giesl,et al.  A Linear Operational Semantics for Termination and Complexity Analysis of ISO Prolog , 2011, LOPSTR.

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

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

[59]  Jürgen Giesl,et al.  SAT-based termination analysis using monotonicity constraints over the integers , 2011, Theory Pract. Log. Program..

[60]  A. Rybalchenko,et al.  Transition invariants , 2004, LICS 2004.

[61]  Jürgen Giesl,et al.  Dependency Triples for Improving Termination Analysis of Logic Programs with Cut , 2010, LOPSTR.

[62]  Thomas A. Henzinger,et al.  Proving non-termination , 2008, POPL '08.

[63]  Daniel Neider Learning Visibly One-Counter Automata in Polynomial Time , 2010 .

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

[65]  Jürgen Giesl,et al.  Mechanizing and Improving Dependency Pairs , 2006, Journal of Automated Reasoning.

[66]  Paul Feautrier,et al.  Multi-dimensional Rankings, Program Termination, and Complexity Bounds of Flowchart Programs , 2010, SAS.