Back to Search Start Over

Under-approximating loops in C programs for fast counterexample detection.

Authors :
Kroening D
Lewis M
Weissenbacher G
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