LOPLSEAug 6, 2015

Compositional Verification of Procedural Programs using Horn Clauses over Integers and Arrays

arXiv:1508.01288v154 citations
Originality Incremental advance
AI Analysis

This work addresses verification challenges for procedural programs with complex memory operations, though it is incremental as it builds on existing compositional reasoning frameworks.

The authors tackled the problem of verifying safety in procedural C programs with heap considerations by developing a compositional SMT-based algorithm using Constrained Horn Clauses and the extensional theory of arrays, resulting in practical implementation and evaluation on SV-COMP'15 benchmarks.

We present a compositional SMT-based algorithm for safety of procedural C programs that takes the heap into consideration as well. Existing SMT-based approaches are either largely restricted to handling linear arithmetic operations and properties, or are non-compositional. We use Constrained Horn Clauses (CHCs) to represent the verification conditions where the memory operations are modeled using the extensional theory of arrays (ARR). First, we describe an exponential time quantifier elimination (QE) algorithm for ARR which can introduce new quantifiers of the index and value sorts. Second, we adapt the QE algorithm to efficiently obtain under-approximations using models, resulting in a polynomial time Model Based Projection (MBP) algorithm. Third, we integrate the MBP algorithm into the framework of compositional reasoning of procedural programs using may and must summaries recently proposed by us. Our solutions to the CHCs are currently restricted to quantifier-free formulas. Finally, we describe our practical experience over SV-COMP'15 benchmarks using an implementation in the tool SPACER.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes