Technical Reports

Radu Iosif and Adam Rogalewicz
Automata-based Termination Proofs (2008)

Keywords: trees, termination

Abstract: This paper proposes a framework for detecting termination of programs handling infinite and complex data domains, such as pointer structures. In this framework, the user has to specify the semantics of the instructions used by the class of programs for which the analysis is intended, as well as a finite number of well-founded relations on the data domain manipulated by these programs. The termination analysis is based on a counterexample-driven abstraction refinement loop. Our tool builds an initial abstraction of the program, which is checked for existence of potential infinite runs, by testing emptiness of its intersection with a predefined Buchi automaton. If the intersection is non-empty, a lasso-shaped counterexample is found. This counterexample is checked for spuriousness by a domain-specific procedure, and in case it is found to be spurious, the abstraction is refined, again by intersection with the complement of the Buchi automaton represented by the lasso. We have instantiated the framework for programs handling tree-like data structures, which allowed us to prove automatically termination of programs such as the depth-first tree traversal, the Deutsch-Schorr-Waite tree traversal, or the linking leaves algorithm.

Contact | Site Map | Site powered by SPIP 4.2.13 + AHUNTSIC [CC License]

info visites 3974125