Automated Termination Proofs for Java Programs with Cyclic Data

In earlier work, we developed a technique to prove termination of Java programs automatically: first, Java programs are automatically transformed to term rewrite systems (TRSs) and then, existing methods and tools are used to prove termination of the resulting TRSs. In this paper, we extend our technique in order to prove termination of algorithms on cyclic data such as cyclic lists or graphs automatically. We implemented our technique in the tool AProVE and performed extensive experiments to evaluate its practical applicability.

[1]  Elvira Albert,et al.  Termination Analysis of Java Bytecode , 2008, FMOODS.

[2]  Daniel Kroening,et al.  Termination Analysis with Compositional Transition Invariants , 2010, CAV.

[3]  Jürgen Giesl,et al.  Proving Termination of Integer Term Rewriting , 2009, RTA.

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

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

[6]  Tobias Nipkow,et al.  A machine-checked model for a Java-like language, virtual machine, and compiler , 2006, TOPL.

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

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

[9]  Jürgen Giesl,et al.  Automated termination proofs for haskell by term rewriting , 2011, TOPL.

[10]  Peter W. O'Hearn,et al.  Scalable Shape Analysis for Systems Code , 2008, CAV.

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

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

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

[14]  Peter W. O'Hearn,et al.  Automatic Termination Proofs for Programs with Shape-Shifting Heaps , 2006, CAV.

[15]  Joachim Kneis,et al.  Derandomizing Non-uniform Color-Coding I , 2009 .

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

[17]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[18]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[19]  Étienne Payet,et al.  A termination analyzer for Java bytecode based on path-length , 2010, TOPL.

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

[21]  Peter W. O'Hearn,et al.  Shape Analysis for Composite Data Structures , 2007, CAV.

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

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

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

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

[26]  Javier O. Blanco,et al.  A Shape Analysis for Non-linear Data Structures , 2010, SAS.

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

[28]  Jürgen Giesl,et al.  Automated termination analysis for logic programs with cut , 2010, Theory Pract. Log. Program..

[29]  Christian von Essen,et al.  Termination Graphs for Java Bytecode , 2010, Verification, Induction, Termination Analysis.

[30]  Nathan Wasser,et al.  Verification, Induction, Termination Analysis , 2011 .

[31]  Alice Feller Termination , 2009 .

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

[33]  Andreas Podelski,et al.  Heap Assumptions on Demand , 2008, CAV.

[34]  Tobias Nipkow,et al.  Term rewriting and all that , 1998 .

[35]  Jürgen Giesl,et al.  Modular Termination Proofs of Recursive Java Bytecode Programs by Term Rewriting , 2011, RTA.

[36]  James Brotherston,et al.  Cyclic proofs of program termination in separation logic , 2008, POPL '08.

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

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