An abstract domain for analyzing heap-manipulating low-level software

  • Authors:
  • Sumit Gulwani;Ashish Tiwari

  • Affiliations:
  • Microsoft Research, Redmond, WA;SRI International, Menlo Park, CA

  • Venue:
  • CAV'07 Proceedings of the 19th international conference on Computer aided verification
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

We describe an abstract domain for representing useful invariants of heap-manipulating programs (in presence of recursive data structures and pointer arithmetic) written in languages like C or low-level code. This abstract domain allows representation of must and may equalities among pointer expressions. Pointer expressions contain existentially or universally quantified integer variables guarded by some base domain constraint. We allow quantification of a special form, namely ∃∀ quantification, to balance expressiveness with efficient automated deduction. The existential quantification is over some dummy non-program variables, which are automatically made explicit by our analysis to express useful program invariants. The universal quantifier is used to express properties of collections of memory locations. Our abstract interpreter automatically computes invariants about programs over this abstract domain. We present initial experimental results demonstrating the effectiveness of this abstract domain on some common coding patterns.