Back to Search
Start Over
Under-approximating loops in C programs for fast counterexample detection.
- Source :
-
Formal methods in system design [Form Methods Syst Des] 2015; Vol. 47, pp. 75-92. Date of Electronic Publication: 2015 Apr 17. - Publication Year :
- 2015
-
Abstract
- Many software model checkers only detect counterexamples with deep loops after exploring numerous spurious and increasingly longer counterexamples. We propose a technique that aims at eliminating this weakness by constructing auxiliary paths that represent the effect of a range of loop iterations. Unlike acceleration, which captures the exact effect of arbitrarily many loop iterations, these auxiliary paths may under-approximate the behaviour of the loops. In return, the approximation is sound with respect to the bit-vector semantics of programs. Our approach supports arbitrary conditions and assignments to arrays in the loop body, but may as a result introduce quantified conditionals. To reduce the resulting performance penalty, we present two quantifier elimination techniques specially geared towards our application. Loop under-approximation can be combined with a broad range of verification techniques. We paired our techniques with lazy abstraction and bounded model checking, and evaluated the resulting tool on a number of buffer overflow benchmarks, demonstrating its ability to efficiently detect deep counterexamples in C programs that manipulate arrays.
Details
- Language :
- English
- ISSN :
- 0925-9856
- Volume :
- 47
- Database :
- MEDLINE
- Journal :
- Formal methods in system design
- Publication Type :
- Academic Journal
- Accession number :
- 26900259
- Full Text :
- https://doi.org/10.1007/s10703-015-0228-1