×

Modular termination proofs of recursive Java bytecode programs by term rewriting. (English) Zbl 1236.68036

Schmid-Schauß, Manfred (ed.), 22nd international conference on rewriting techniques and applications (RTA 2011), Novi Sad, Serbia, May 30 – June 1, 2011. Wadern: Schloss Dagstuhl – Leibniz Zentrum für Informatik (ISBN 978-3-939897-30-9). LIPIcs – Leibniz International Proceedings in Informatics 10, 155-170, electronic only (2011).
Summary: In earlier work 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 re-use 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.
For the entire collection see [Zbl 1235.68033].

MSC:

68N19 Other programming paradigms (object-oriented, sequential, concurrent, automatic, etc.)
68N30 Mathematical aspects of software engineering (specification, verification, metrics, requirements, etc.)
68Q42 Grammars and rewriting systems

Software:

AProVE