Removing Unnecessary Variables from Horn Clause Verification Conditions
Emanuele De Angelis, Fabio Fioravanti, Alberto Pettorossi, Maurizio, Proietti

TL;DR
This paper introduces a method to remove unnecessary variables from verification conditions expressed as constrained Horn clauses, improving the efficiency of program correctness proofs.
Contribution
It adapts variable removal techniques from logic programming to the CHC setting, enhancing solver effectiveness in program verification.
Findings
Removing unnecessary variables increases solver success rate.
Technique improves verification efficiency in some cases.
Method adapts logic programming techniques to CHC verification.
Abstract
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.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
