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

arXiv: https://arxiv.org/abs/1508.01288 · HTML: https://mlsanity.com/paper/1508.01288/

## Key facts

- Cited by 3 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 6 Aug 2015.

## Built on by (most cited first, 3 of 3)

- [The Horn Non-Clausal Class and its Polynomiality](https://mlsanity.com/paper/2108.13744/) (2021)
- [The Possibilistic Horn Non-Clausal Knowledge Bases](https://mlsanity.com/paper/2111.07648/) (2021)
- [Verification Modulo Tested Library Contracts](https://mlsanity.com/paper/2604.15533/) (2026)

## Abstract (arXiv)

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.
