LOPLSEJul 15, 2016

Removing Unnecessary Variables from Horn Clause Verification Conditions

arXiv:1607.04460v1
AI Analysis

This work addresses a specific bottleneck in automated program verification for developers and researchers, but it is incremental as it adapts existing techniques to a new setting.

The paper tackles the problem of unnecessary variables in constrained Horn clause verification conditions, which can hinder automated program correctness proofs, and shows that removing these variables improves solver effectiveness in some cases.

Verification conditions (VCs) are logical formulas whose satisfiability guarantees program correctness. We consider VCs in the form of constrained Horn clauses (CHC) which are automatically generated from the encoding of (an interpreter of) the operational semantics of the programming language. VCs are derived through program specialization based on the unfold/fold transformation rules and, as it often happens when specializing interpreters, they contain unnecessary variables, that is, variables which are not required for the correctness proofs of the programs under verification. In this paper we adapt to the CHC setting some of the techniques that were developed for removing unnecessary variables from logic programs, and we show that, in some cases, the application of these techniques increases the effectiveness of Horn clause solvers when proving program correctness.

Foundations

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

Your Notes