Technical Reports

Abstract: We consider the termination problem of programs
manipulating tree-like dynamic data structures. Our approach is based on an
abstract-check-refine loop. We use abstract regular tree model-checking to infer
invariants of the program. Then, we translate the program to a counter automaton
which simulates it. If the counter automaton can be shown to terminate using
existing techniques, the program terminates. If not, we analyze the possible
counterexample given by a counter automata termination checker and either
conclude that the program does not terminate, or else refine the abstraction and
repeat. We show that the spuriousness problem for lasso-shaped counterexamples
is decidable in some non-trivial cases. We applied the method successfully on
several interesting case studies.
/BOUCLE_trep>