posted on 2015-06-23, 10:23authored byAlexey Bakhirkin, J. Berdine, Nir Piterman
Non-termination of structured imperative programs is primarily due to infinite loops. An important class of non-terminating loop behaviors can be characterized using the notion of recurrent sets. A recurrent set is a set of states from which execution of the loop cannot or might not escape. Existing analyses that infer recurrent sets to our knowledge rely on one of: the combination of forward and backward analyses, quantifier elimination, or SMT-solvers. We propose a purely forward abstract interpretation–based analysis that can be used together with a possibly complicated abstract domain where none of the above is readily available. The analysis searches for a recurrent set of every individual loop in a program by building a graph of abstract states and analyzing it in a novel way. The graph is searched for a witness of a recurrent set that takes the form of what we call a recurrent component which is somewhat similar to the notion of an end component in a Markov decision process.
Funding
A. Bakhirkin is supported by a Microsoft Research PhD Scholarship.
History
Citation
Lecture Notes in Computer Science
Author affiliation
/Organisation/COLLEGE OF SCIENCE AND ENGINEERING/Department of Computer Science
Source
22nd International Symposium, STATIC ANALYSIS SYMPOSIUM (SAS) 2015, Saint-Malo, France