Modular Termination Proofs of Recursive Java Bytecode Programs by Term Rewriting

In [5, 15] we presented an approach to prove termination of non-recursive Java Bytecode (JBC) programs automatically. Here, JBC programs are first transformed to finite termination graphs which represent all possible runs of the program. Afterwards, the termination graphs are translated to term rewrite systems (TRSs) such that termination of the resulting TRSs implies termination of the original JBC programs. So in this way, existing techniques and tools from term rewriting can be used to prove termination of JBC automatically. In this paper, we improve this approach substantially in two ways: (1) We extend it in order to also analyze recursive JBC programs. To this end, one has to represent call stacks of arbitrary size. (2) To handle JBC programs with several methods, we modularize our approach in order to reuse termination graphs and TRSs for the separate methods and to prove termination of the resulting TRS in a modular way. We implemented our approach in the tool AProVE. Our experiments show that the new contributions increase the power of termination analysis for JBC significantly. 1998 ACM Subject Classification D.1.5 - Object-oriented Programming, D.2.4 - Software/Program Verification, D.3.3 - Language Constructs and Features, F.3 - Logics and Meanings of Programs, F.4.2 - Grammars and Other Rewriting Systems, I.2.2 - Automatic Programming

[1]  Andreas Podelski,et al.  Summarization for termination: no return! , 2009, Formal Methods Syst. Des..

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

[3]  Dirk Wilking Empirical studies for the application of agile methods to embedded systems , 2008 .

[4]  Stavros D. Nikolopoulos,et al.  The Longest Path Problem Is Polynomial on Interval Graphs , 2009, MFCS.

[5]  Carsten Kern,et al.  Learning communicating and nondeterministic automata , 2009 .

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

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

[8]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[9]  Joost-Pieter Katoen,et al.  Quantitative Model Checking of Continuous-Time Markov Chains Against Timed Automata Specifications , 2009, 2009 24th Annual IEEE Symposium on Logic In Computer Science.

[10]  Joachim Kneis,et al.  Satellites and Mirrors for Solving Independent Set on Sparse Graphs , 2009 .

[11]  Shmuel Zaks,et al.  A New Intersection Model and Improved Algorithms for Tolerance Graphs , 2009, SIAM J. Discret. Math..

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

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

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

[15]  Enno Ohlebusch,et al.  Modular Termination Proofs for Rewriting Using Dependency Pairs , 2002, J. Symb. Comput..

[16]  J. Katoen,et al.  Computing Maximum Reachability Probabilities in Markovian Timed Automata , 2010 .

[17]  Bastian Schlich,et al.  Model checking of software for microcontrollers , 2010, TECS.

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

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

[20]  Joost-Pieter Katoen,et al.  Quantitative Model Checking of Continuous-Time Markov Chains Against Timed Automata Specifications , 2009, 2009 24th Annual IEEE Symposium on Logic In Computer Science.

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

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

[23]  Martin Zimmermann Time-Optimal Winning Strategies for Poset Games , 2009, CIAA.

[24]  Shmuel Zaks,et al.  The Recognition of Tolerance and Bounded Tolerance Graphs , 2010, SIAM J. Comput..

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

[26]  Martin R. Neuhäußer,et al.  Time-Bounded Reachability in Continuous-Time Markov Decision Processes ⋆ , 2009 .

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

[28]  Joost-Pieter Katoen,et al.  Abstraction for Stochastic Systems by Erlang's Method of Stages , 2008, CONCUR.

[29]  Daniel Klünder,et al.  Entwurf eingebetteter Software mit abstrakten Zustandsmaschinen und Business Object Notation , 2009 .

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

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

[32]  Holger Krahn MontiCore: agile Entwicklung von domänenspezifischen Sprachen im Software-Engineering , 2010, Aachener Informatik-Berichte, Software Engineering.

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

[34]  Wolfgang Thomas,et al.  Parametrized Regular Infinite Games and Higher-Order Pushdown Strategies , 2009, FCT.

[35]  Derek G. Corneil,et al.  Vertex splitting and the recognition of trapezoid graphs , 2011, Discret. Appl. Math..