Program analysis with interpolants

This dissertation discusses novel techniques for interpolation-based software model checking, an approximate method which uses Craig interpolation to compute invariants of programs. Our work addresses two aspects of program analyses based on model checking: verification (the construction of correctn...

Full description

Bibliographic Details
Main Authors: Weissenbacher, G, Georg Weissenbacher
Other Authors: Kroening, D
Format: Thesis
Language:English
Published: 2010
Subjects:
_version_ 1826277068773523456
author Weissenbacher, G
Georg Weissenbacher
author2 Kroening, D
author_facet Kroening, D
Weissenbacher, G
Georg Weissenbacher
author_sort Weissenbacher, G
collection OXFORD
description This dissertation discusses novel techniques for interpolation-based software model checking, an approximate method which uses Craig interpolation to compute invariants of programs. Our work addresses two aspects of program analyses based on model checking: verification (the construction of correctness proofs for programs) and falsification (the detection of counterexamples that violate the specification). In Hoare's calculus, a proof of correctness comprises assertions which establish that a program adheres to its specification. The principal challenge is to derive appropriate assertions and loop invariants. Contemporary software verification tools use Craig interpolation (as opposed to traditional predicate transformers such as the weakest precondition) to derive approximate assertions. The performance of the model checker is contingent on the Craig interpolants computed. We present novel interpolation techniques which provide the following advantages over existing methods. Firstly, the resulting interpolants are sound with respect to the bit-level semantics of programs, which is an improvement over interpolation systems that use linear arithmetic over the reals to approximate bit-vector arithmetic and/or do not support bit-level operations. Secondly, our interpolation systems afford us a choice of interpolants and enable us to fine-tune their logical strength and structure. In contrast, existing procedures are limited to a single ad-hoc choice of an interpolant. Interpolation-based verification tools are typically forced to refine an initial approximation repeatedly in order to achieve the accuracy required to establish or refute the correctness of a program. The detection of a counterexample containing a repetitive construct may necessitate one refinement step (involving the computation of additional interpolants) for each iteration of the loop. We present a heuristic that aims to avoid the repeated and computationally expensive construction of interpolants, thus enabling the detection of deeply buried defects such as buffer overflows. Finally, we present an implementation of our techniques and evaluate them on a set of standardised device driver and buffer overflow benchmarks.
first_indexed 2024-03-06T23:23:20Z
format Thesis
id oxford-uuid:6987de8b-92c2-4309-b762-f0b0b9a165e6
institution University of Oxford
language English
last_indexed 2024-03-06T23:23:20Z
publishDate 2010
record_format dspace
spelling oxford-uuid:6987de8b-92c2-4309-b762-f0b0b9a165e62022-03-26T18:51:34ZProgram analysis with interpolantsThesishttp://purl.org/coar/resource_type/c_db06uuid:6987de8b-92c2-4309-b762-f0b0b9a165e6Theory and automated verificationProgram development and toolsComputer science (mathematics)EnglishOxford University Research Archive - Valet2010Weissenbacher, GGeorg WeissenbacherKroening, DThis dissertation discusses novel techniques for interpolation-based software model checking, an approximate method which uses Craig interpolation to compute invariants of programs. Our work addresses two aspects of program analyses based on model checking: verification (the construction of correctness proofs for programs) and falsification (the detection of counterexamples that violate the specification). In Hoare's calculus, a proof of correctness comprises assertions which establish that a program adheres to its specification. The principal challenge is to derive appropriate assertions and loop invariants. Contemporary software verification tools use Craig interpolation (as opposed to traditional predicate transformers such as the weakest precondition) to derive approximate assertions. The performance of the model checker is contingent on the Craig interpolants computed. We present novel interpolation techniques which provide the following advantages over existing methods. Firstly, the resulting interpolants are sound with respect to the bit-level semantics of programs, which is an improvement over interpolation systems that use linear arithmetic over the reals to approximate bit-vector arithmetic and/or do not support bit-level operations. Secondly, our interpolation systems afford us a choice of interpolants and enable us to fine-tune their logical strength and structure. In contrast, existing procedures are limited to a single ad-hoc choice of an interpolant. Interpolation-based verification tools are typically forced to refine an initial approximation repeatedly in order to achieve the accuracy required to establish or refute the correctness of a program. The detection of a counterexample containing a repetitive construct may necessitate one refinement step (involving the computation of additional interpolants) for each iteration of the loop. We present a heuristic that aims to avoid the repeated and computationally expensive construction of interpolants, thus enabling the detection of deeply buried defects such as buffer overflows. Finally, we present an implementation of our techniques and evaluate them on a set of standardised device driver and buffer overflow benchmarks.
spellingShingle Theory and automated verification
Program development and tools
Computer science (mathematics)
Weissenbacher, G
Georg Weissenbacher
Program analysis with interpolants
title Program analysis with interpolants
title_full Program analysis with interpolants
title_fullStr Program analysis with interpolants
title_full_unstemmed Program analysis with interpolants
title_short Program analysis with interpolants
title_sort program analysis with interpolants
topic Theory and automated verification
Program development and tools
Computer science (mathematics)
work_keys_str_mv AT weissenbacherg programanalysiswithinterpolants
AT georgweissenbacher programanalysiswithinterpolants