posted on 2016-01-18, 14:57authored byNir Piterman, Alexey Bakhirkin
We propose an abstract-interpretation-based analysis for recurrent sets.
A recurrent set is a set of states from which the execution of a program cannot or
might not (as in our case) escape. A recurrent set is a part of a program’s nontermination
proof (that needs to be complemented by reachability analysis). We
find recurrent sets by performing a potentially over-approximate backward analysis
that produces an initial candidate. We then perform over-approximate forward
analysis on the candidate to check and refine it and ensure soundness. In practice,
the analysis relies on trace partitioning that predicts future paths through the
program that non-terminating executions will take. Using our technique, we were
able to find recurrent sets in many benchmarks found in the literature including
some that, to our knowledge, cannot be handled by existing tools. In addition,
we note that typically, analyses that search for recurrent sets are applied to linear
under-approximations of programs or employ some form of non-approximate
numeric reasoning. In contrast, our analysis uses standard abstract-interpretation
techniques and is potentially applicable to a larger class of abstract domains (and
therefore – programs).
History
Citation
Finding Recurrent Sets with Backward Analysis and Trace Partitioning. In: Chechik M., Raskin JF. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2016. Lecture Notes in Computer Science, vol 9636.
Author affiliation
/Organisation/COLLEGE OF SCIENCE AND ENGINEERING/Department of Computer Science
Source
22nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems, 2-8 April 2016, Eindhoven, The Netherlands.
Version
AM (Accepted Manuscript)
Published in
Finding Recurrent Sets with Backward Analysis and Trace Partitioning. In: Chechik M.