HAVOC is a modular verifier for systems software written in C. It takes as input an annotated C program, in the form of pre- and post-conditions and loop invariants, and uses the Boogie verifier and the SMT solver Z3 to check the annotations. The novelty of the tool lies in a) an accurate memory model for C accounting for low-level operations such as pointer arithmetic, address-of operations, and casts; b) an expressive annotation language; and c) efficient decision procedures to reason about the annotations. The annotation language not only supports writing most pointer expressions, but also enables a user to refer to sets of pointers and to express quantified invariants over such sets. We provide support for constructing sets of pointers in a linked list, all indices in an array, and all objects of a given runtime type.
Note By installing, copying, or otherwise using this software, you agree to be bound by the terms of its license. Read the license.