1c58942e3a2faa02.tex
1: \begin{abstract}
2:   Automated program verification is a difficult problem. It is
3:   undecidable even for transition systems over Linear Integer
4:   Arithmetic (LIA). Extending the transition system with theory of Arrays,
5:   further complicates the problem by requiring inference and reasoning
6:   with universally quantified formulas. In this paper, we present a
7:   new algorithm, \textsc{Quic3}, that extends IC3 to infer universally
8:   quantified invariants over the combined theory of LIA and Arrays. Unlike other approaches that use either IC3
9:   or an SMT solver as a black box, \textsc{Quic3} carefully manages
10:   quantified generalization (to construct quantified invariants) and
11:   quantifier instantiation (to detect convergence in the presence of
12:   quantifiers). While \textsc{Quic3} is not guaranteed to converge, it
13:   is guaranteed to make progress by exploring longer and longer
14:   executions. We have implemented \textsc{Quic3} within the Constrained
15:   Horn Clause solver engine of Z3 and experimented with it by applying
16:   \textsc{Quic3} to verifying a variety of public benchmarks of array
17:   manipulating C programs.
18: \end{abstract}
19: