Under-approximating loops in C programs for fast counterexample detection

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. U...

Full description

Bibliographic Details
Main Authors: Kroening, D, Lewis, M, Weissenbacher, G
Format: Journal article
Language:English
Published: Springer Verlag 2015
_version_ 1797059464227979264
author Kroening, D
Lewis, M
Weissenbacher, G
author_facet Kroening, D
Lewis, M
Weissenbacher, G
author_sort Kroening, D
collection OXFORD
description 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.
first_indexed 2024-03-06T20:04:36Z
format Journal article
id oxford-uuid:28831064-29d6-4edd-b689-df8069b440c6
institution University of Oxford
language English
last_indexed 2024-03-06T20:04:36Z
publishDate 2015
publisher Springer Verlag
record_format dspace
spelling oxford-uuid:28831064-29d6-4edd-b689-df8069b440c62022-03-26T12:13:15ZUnder-approximating loops in C programs for fast counterexample detectionJournal articlehttp://purl.org/coar/resource_type/c_dcae04bcuuid:28831064-29d6-4edd-b689-df8069b440c6EnglishSymplectic Elements at OxfordSpringer Verlag2015Kroening, DLewis, MWeissenbacher, GMany 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.
spellingShingle Kroening, D
Lewis, M
Weissenbacher, G
Under-approximating loops in C programs for fast counterexample detection
title Under-approximating loops in C programs for fast counterexample detection
title_full Under-approximating loops in C programs for fast counterexample detection
title_fullStr Under-approximating loops in C programs for fast counterexample detection
title_full_unstemmed Under-approximating loops in C programs for fast counterexample detection
title_short Under-approximating loops in C programs for fast counterexample detection
title_sort under approximating loops in c programs for fast counterexample detection
work_keys_str_mv AT kroeningd underapproximatingloopsincprogramsforfastcounterexampledetection
AT lewism underapproximatingloopsincprogramsforfastcounterexampledetection
AT weissenbacherg underapproximatingloopsincprogramsforfastcounterexampledetection