4 research outputs found
Efficient Interpolation for the Theory of Arrays
Existing techniques for Craig interpolation for the quantifier-free fragment
of the theory of arrays are inefficient for computing sequence and tree
interpolants: the solver needs to run for every partitioning of the
interpolation problem to avoid creating -mixed terms. We present a new
approach using Proof Tree Preserving Interpolation and an array solver based on
Weak Equivalence on Arrays. We give an interpolation algorithm for the lemmas
produced by the array solver. The computed interpolants have worst-case
exponential size for extensionality lemmas and worst-case quadratic size
otherwise. We show that these bounds are strict in the sense that there are
lemmas with no smaller interpolants. We implemented the algorithm and show that
the produced interpolants are useful to prove memory safety for C programs.Comment: long version of the paper at IJCAR 201
CHC-COMP 2022: Competition Report
CHC-COMP 2022 is the fifth edition of the competition of solvers for
Constrained Horn Clauses. The competition was run in March 2022; the results
were presented at the 9th Workshop on Horn Clauses for Verification and
Synthesis held in Munich, Germany, on April 3, 2022. This edition featured six
solvers, and eight tracks consisting of sets of linear and nonlinear clauses
with constraints over linear integer arithmetic, linear real arithmetic,
arrays, and algebraic data types. This report provides an overview of the
organization behind the competition runs: it includes the technical details of
the competition setup as well as presenting the results of the 2022 edition.Comment: In Proceedings HCVS/VPT 2022, arXiv:2211.10675. arXiv admin note:
text overlap with arXiv:2109.04635, arXiv:2008.02939 by other author
Regular Abstractions for Array Systems
Verifying safety and liveness over array systems is a highly challenging
problem. Array systems naturally capture parameterized systems such as
distributed protocols with an unbounded number of processes. Such distributed
protocols often exploit process IDs during their computation, resulting in
array systems whose element values range over an infinite domain. In this
paper, we develop a novel framework for proving safety and liveness over array
systems. The crux of the framework is to overapproximate an array system as a
string rewriting system (i.e. over a finite alphabet) by means of a new
predicate abstraction that exploits the so-called indexed predicates. This
allows us to tap into powerful verification methods for string rewriting
systems that have been heavily developed in the last few decades (e.g. regular
model checking). We demonstrate how our method yields simple, automatically
verifiable proofs of safety and liveness properties for challenging examples,
including Dijkstra's self-stabilizing protocol and the Chang-Roberts leader
election protocol