<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Proof Tree Preserving Sequence Interpolation of Quantified Formulas in the Theory of Equality</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Elisabeth Henkel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jochen Hoenicke</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tanja Schindler</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, University of Freiburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>3</fpage>
      <lpage>16</lpage>
      <abstract>
        <p>Interpolation of SMT formulas is dificult, especially in the presence of quantifiers since quantifier instantiations introduce mixed terms, i.e., terms containing symbols that belong to diferent partitions of the input formula. Existing interpolation algorithms for quantified formulas require proof modifications or syntactical restrictions on the generated proof trees. We present a non-restrictive, proof tree preserving approach to compute inductive sequences of interpolants for quantified formulas in the theory of equality with uninterpreted functions using a single proof tree.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;SMT</kwd>
        <kwd>interpolation</kwd>
        <kwd>quantified formulas</kwd>
        <kwd>sequence interpolants</kwd>
        <kwd>proof tree preserving interpolation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        We present an interpolation procedure for quantified formulas in the theory of equality with
uninterpreted functions. Interpolants have various applications in model checking, for example,
during abstraction refinement or invariant generation [
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref4">1, 2, 3, 4</xref>
        ]. For the analysis of sequential
programs, sequence interpolants [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] that are computed from infeasible error paths, are of
particular interest. For each point of a program path, a sequence interpolant provides a reason
why an error is unreachable from this point on. Often, the interpolant is general enough to
exclude several paths at once.
      </p>
      <p>
        Many verification problems require the ability to reason about quantifiers, which are, among
others, needed in user-added assertions, for the modeling of unsupported theories or memory
modeling [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ]. However, the support of interpolation in the presence of quantified formulas
is limited. A major challenge are mixed terms that are introduced in the context of quantifier
instantiations. Most interpolation algorithms are either restricted to quantifier-free input
formulas [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref13 ref7 ref8 ref9">7, 8, 9, 10, 11, 12, 13</xref>
        ], require proof modifications [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], or require syntactical restrictions
on the generated proof trees [
        <xref ref-type="bibr" rid="ref15 ref16 ref17">15, 16, 17</xref>
        ].
      </p>
      <p>
        Our method is based on the proof tree preserving interpolation approach [
        <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
        ] which
allows for interpolation of quantifier-free formulas in the presence of mixed literals without the
need for proof modifications or solver restrictions. In particular, sequence or tree interpolants
can be computed from one single proof of unsatisfiability. We extend this procedure to handle
instantiation-based resolution proofs of quantified formulas similar to [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. However, we
simplify the presented quantifier introduction step and perform all necessary modifications
only virtually such that the proof tree preserving character is restored.
      </p>
      <p>The contributions of this paper are a proof tree and satisfiability preserving scheme for the
virtual modification of mixed terms, a scheme to interpolate instantiation clauses generated by
a quantifier solver, and modifications of interpolation rules for theory lemmas and resolvents to
generate valid inductive sequences of interpolants from a single proof tree.</p>
      <p>
        Related Work. Interpolation goes back to Craig [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] who proved that for a valid implication
 →  in first-order logic, there always exists an interpolant (Craig called it “intermediate”),
i.e., a formula  that is implied by  and implies , and that contains only symbols that  and
 share. Since then, several methods for computing interpolants from proofs of unsatisfiability
have been presented both for quantifier-free and quantified problems. We focus our presentation
on some of the most recent and some of the closest related works, and refer to [
        <xref ref-type="bibr" rid="ref15 ref19">15, 19</xref>
        ] for an
overview of existing work before 2015. Most work on interpolation in the presence of quantified
formulas has been done in the context of automated theorem proving.
      </p>
      <p>
        Gleiss et al. [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] present an interpolation method based on splitting the proof of unsatisfiability
into local subproofs. Their method can be applied to arbitrary first-order theories, but requires
local proofs, i.e., proofs where each inference can be assigned to one partition as all occurring
symbols lie in one partition. Each subproof that only uses inferences assigned to  is then
summarized in an intermediant. For local proofs, the conjunction of these intermediants is an
interpolant. The method is implemented in the Vampire theorem prover [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>
        Bonacina and Johansson [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] present a method for interpolation in first-order logic with
equality in the context of the superposition calculus which first computes provisional interpolants
and then quantifies over constants that are not shared between  and . Their method does
not require local proofs, but only yields interpolants if the only non-shared symbols in the
provisional interpolants are constants. The authors also discuss how the method can be used in
the DPLL(Γ +  ) calculus [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], but to our knowledge, there does not exist an implementation.
      </p>
      <p>
        The method presented by Kovács and Voronkov [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] does not require local proofs either. They
also follow a two-step approach, first computing relational interpolants and then quantifying
over non-shared symbols. In contrast to [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], their method can deal with non-shared function
symbols in the relational interpolants, but is restricted to logic without equality.
      </p>
      <p>
        A basis for our work is the interpolation method by Christ and Hoenicke [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] for
instantiationbased proofs in SMT solvers. It relies on proof transformations to obtain a purified proof where
all instances of quantified formulas are local. This is achieved by introducing variables and
auxiliary equations relating the variables to the terms they replace. To obtain an interpolant,
these variables are bound by quantifiers once the terms they replace are resolved from the proof.
      </p>
      <p>
        Finally, Christ et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] present a framework that allows for computing quantifier-free
interpolants for quantifier-free problems from a given proof of unsatisfiability without modifying
the proof. In particular, it deals with mixed literals containing non-shared terms from both 
and  by auxiliary variables and more complex interpolation rules. We describe this method in
more detail in Section 3.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Notation</title>
      <p>We assume the usual notions of first-order logic. A theory  is defined by a signature that
contains interpreted and uninterpreted constant, function, and predicate symbols, and by a set
of axioms that settle the meaning for its interpreted symbols. We consider the theory of equality
(with uninterpreted functions), whose axioms state reflexivity, symmetry, and transitivity for
the single interpreted symbol, the equality predicate =, and congruence for each uninterpreted
function symbol.</p>
      <p>As usual, a term is a variable, a constant, or an application of an -ary function symbol to 
terms. An atom is the formula that is always true (⊤), an equality between two terms, or the
application of an -ary predicate to  terms. A literal is an atom or its negation. A clause is a
disjunction of literals, and a formula is in conjunctive normal form (CNF) if it is a conjunction of
clauses. We assume that formulas are in CNF where each clause can be preceded by universal
quantifiers only. This can be accomplished by Skolemization.</p>
      <p>We usually denote functions by , , ℎ, terms by , , , , variables by , , , , literals by ℓ,
clauses by , the empty clause by ⊥, and formulas by , , , ,  . For two formulas  and  ,
we use  |=  to denote that  is a logical consequence of  in the theory of equality. Formula
 is unsatisfiable if and only if  |= ⊥. We denote the equivalence of two formulas by  ≡  . A
formula is said to be ground if it does not contain any variable.</p>
      <p>A substitution maps variables to terms. We denote the result of substituting the terms ¯ for the
variables ¯ in a formula (¯) by (¯). We call a substitution ground if the terms ¯ are ground.
By [ℓ] we denote a formula in negation normal form where the literal ℓ only occurs positively,
and by [ ] the same formula where all occurrences of ℓ are replaced by the formula  .</p>
    </sec>
    <sec id="sec-3">
      <title>3. Preliminaries</title>
      <p>The basis for our interpolation procedure is an instantiation-based resolution proof for the
unsatisfiability of a given formula. We shortly describe the structure of such proofs and how
interpolants can be computed from ground resolution proofs.</p>
    </sec>
    <sec id="sec-4">
      <title>Instantiation-Based Resolution Proofs. An instance of a quantified formula ∀¯.(¯) is</title>
      <p>the result of applying a ground substitution for the variables ¯ to the body , i.e., the formula
(¯) for ground terms ¯. Most SMT solvers treat problems containing quantified formulas by
successively adding instances of the quantified formulas to the ground part which is then solved
in the usual way (e.g., with the DPLL( )/CDCL algorithm). This approach is mainly suitable to
show unsatisfiability of a formula, but it can also show satisfiability in some restricted fragments.</p>
      <p>A resolution proof for the unsatisfiability of a formula in CNF is a derivation of the empty
clause ⊥ using the rule
1 ∨ ℓ 2 ∨ ¬ℓ</p>
      <p>
        1 ∨ 2
where 1 and 2 are clauses, and ℓ is a literal called the pivot (literal). A resolution proof can
be represented by a tree. For a formula in a theory  that contains quantified subformulas,
the tree has three types of leaves: input clauses, theory lemmas, i.e., clauses that are valid in
the theory  , and instantiation clauses of the form ¬(∀¯.(¯)) ∨ (¯). Note that we treat the
quantified formula as a literal which also occurs positively as an input clause. The inner nodes
are clauses obtained by resolution, and the unique root node is the empty clause ⊥.
Interpolation. A Craig interpolant [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] for an unsatisfiable conjunction  ∧  is a formula
 that is implied by , contradicts , and contains only symbols that occur in both  and
.1 The notion of a Craig interpolant extends to formulas in a theory  , in this case, symbols
interpreted by the theory may occur in the interpolant. The notion of binary interpolants can
be generalized to sequences of formulas. Given such a sequence of formulas 1, . . . ,  that
together are unsatisfiable, a sequence interpolant [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] 0, . . . ,  has the following properties:
1. the formulas 0 and  are ⊤ and ⊥, respectively,
2. the sequence of interpolants is inductive, i.e., for  = 0, . . . , , the interpolant  together
with the formula +1 implies the next interpolant +1, and
3. for  = 1, . . . , , each interpolant  contains only symbols that occur both in some of
the formulas 1, . . . ,  and in some of the formulas +1, . . . .
      </p>
      <p>We call the formulas  the partitions2 of the interpolation problem. If a symbol occurs in
two partitions  and , we can assume that it also occurs in all partitions between  and
 without changing the symbol condition of the sequence interpolants. Therefore, we say a
symbol virtually occurs in  if it occurs in some  with  ≤  and in some  with  ≤ .</p>
      <p>Each interpolant  in a sequence interpolant is also a binary interpolant of  :≡ 1 ∧ · · · ∧ 
and  :≡ +1 ∧ · · · ∧ . Note that not every sequence of binary interpolants obtained by
such partitioning is a sequence interpolant. A literal is mixed if there is no partition  where all
symbols of the literal virtually occur. All literals of the input problem are obviously not mixed,
but mixed literals can be introduced by Nelson-Oppen equality propagation.</p>
      <p>
        Interpolants can be computed from resolution proofs, e.g., with the interpolation systems by
Pudlák [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] or by McMillan [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The general idea is to compute so-called partial interpolants
for every formula proved in the intermediate steps. For resolution proofs such a formula is a
clause . The conjunction ¬ is split and added to the input formulas to obtain a sequence
interpolation problem. First, each term and literal is given one or more colors that correspond to
the partitions where it occurs. A term that occurs in multiple partitions can be given multiple
colors, or a color can be chosen arbitrarily. If a term has multiple colors, we require that the
set of colors forms an interval [, ]. We define the projection ¬ ⇂  as the conjunction of all
literals in ¬ that have color . In particular, ℓ ⇂  is ℓ if ℓ has color , and ⊤ otherwise. Then
the partial interpolant of  is a sequence interpolant of 1 ∧ ¬ ⇂ 1, . . . ,  ∧ ¬ ⇂ . The
interpolation systems of Pudlák and McMillan only difer in the way they define the coloring:
for Pudlák a shared literal is colored with all partitions it occurs in, for McMillan a shared literal
is colored with only the last partition it occurs in. Both systems require that each literal has at
1As mentioned in the related work, Craig originally defined an interpolant for a valid implication  → , i.e.,
as a formula implied by  and contradictory to . The notion we use is also known as reverse interpolant [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
      </p>
      <p>
        2The word partition can be used in English for the sections, or the boundaries, or the whole partitioning. In this
paper we use the word partition for one section of the partitioning.
least one color and that all symbols in the literal occur in the corresponding partition. Mixed
literals require a diferent interpolation scheme where projections ℓ ⇂  are defined diferently.
Proof Tree Preserving Interpolation. The proof tree preserving interpolation framework
allows for computing binary [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] and sequence or tree interpolants [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] in the presence of mixed
equality literals without modifying a given proof tree. It works with equality interpolating
theories [
        <xref ref-type="bibr" rid="ref23 ref9">9, 23</xref>
        ].
      </p>
      <p>A mixed equality literal  =  or  ̸=  is a literal where  is colored with [′, ] and  is
colored with [, ′] where these intervals are disjoint. W.l.o.g., we assume that  &lt; . We
also say that this literal is , -mixed. The basic idea is to use a fresh auxiliary variable  for
each mixed equality literal. When projecting a , -mixed literal, we split it into two literals
using the auxiliary variable.</p>
      <p>( = ) ⇂  :≡ ( = ) ( = ) ⇂  :≡ ( = ) ( = ) ⇂  :≡ ⊤
( ̸= ) ⇂  :≡ EQ (, ) ( ̸= ) ⇂  :≡ ¬ EQ (, ) ( ̸= ) ⇂  :≡ ⊤
for  ̸= , 
for  ̸= , 
Here, EQ is an uninterpreted predicate that forces the interpolant to have a certain shape. The
interpolation procedure treats EQ and  as shared symbols, which may occur in the interpolant.
Note that ℓ ⇂  ∧ ℓ ⇂  is equisatisfiable to ℓ and has the same models for the symbols in ℓ.</p>
      <p>
        Again, we define the partial interpolants of a clause  as the sequence interpolant for the
sequence 1 ∧ ¬ ⇂ 1, . . . ,  ∧ ¬ ⇂ . If the negation ¬ of a clause contains a mixed
equality  = , the partial interpolants  for  with  ≤  &lt;  may contain the auxiliary
variable . If ¬ contains  ̸= , we require that the variable  in the interpolant  only occurs
in atoms of the form EQ (, ) which must occur positively in . This is not really a restriction
as interpolants naturally have this shape. The  are shared terms, which are closely related to
equality-interpolating terms in the sense of [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>As mentioned earlier, an interpolant is computed by annotating each clause  in the proof tree,
starting with the leaves, by a partial interpolant 0, . . . , . We denote this by  : 1, . . . , − 1
(we omit 0 ≡ ⊤ and  ≡ ⊥ ). Resolution combines the partial interpolants of the involved
clauses. To resolve on a mixed literal  = , we combine the partial interpolants of the input
clauses using the following function that replaces all occurrences of EQ (, ) in  by a copy
of ′ where all occurrences of  are replaced by .</p>
      <p>ruleEq ( = , [EQ (, 1)]...[EQ (, )], ′()) :≡ [′(1)]...[′()]
The following rule is used to compute the partial interpolants for the resolvent of a resolution
rule from the partial interpolants of the antecedents.</p>
      <p>1 ∨ ℓ : 1, . . . , − 1</p>
      <p>2 ∨ ¬ℓ : 1′, . . . , ′− 1
1 ∨ 2 : ′′, . . . , ′′− 1
1
with ′′ :≡
⎧
⎪ ∨ ′
⎪
⎪
⎪⎨ ∧ 
(resolution)
⎪ruleEq (ℓ, , ′)
⎪ 
⎪
⎪⎩( ∨ ℓ) ∧ (′ ∨ ¬ℓ) if ℓ has colors [, ] with  ≤  &lt; .</p>
      <p>if ℓ has only colors  ≤ ,
if ℓ has only colors  &gt; ,
if ℓ is , -mixed,  ≤  &lt; ,
Example 1 (Mixed Literals). Consider the following two (tautological) clauses
 :≡  =  ∨  ̸=  ∨  ̸=</p>
      <p>′ :≡  ̸=  ∨  ̸=  () ∨  =  (),
where  is 1-local,  is 2-local, and the remaining symbols are shared. A partial interpolant
of  is the formula EQ (, ), since it is an interpolant of
¬ ⇂ 1 ≡ EQ (, ) ∧  =  and
¬ ⇂ 2 ≡ ¬</p>
      <p>EQ (, ) ∧  =  .</p>
      <p>
        This interpolant can be obtained by using well-known interpolation techniques for the theory
of equality. Note that EQ (, ) captures the equality-interpolating term  of  =  in the sense
of [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. For the second clause ′, the formula  =  () is a partial interpolant, i.e., it is an
interpolant of
¬′ ⇂ 1 ≡  =  ∧  =  () and
¬′ ⇂ 2 ≡  =  ∧  ̸=  () .
      </p>
      <p>The interpolant for the resolvent of  and ′ can now be obtained using the resolution rule:
 =  ∨  ̸=  ∨  ̸=  : EQ (, )  ̸=  ∨  ̸=  () ∨  =  () :  =  ()
 ̸=  ∨  ̸=  () ∨  ̸=  ∨  =  () :  =  ()
The interested reader is invited to check that the annotated partial interpolant is correct.</p>
    </sec>
    <sec id="sec-5">
      <title>4. Mixed Terms</title>
      <p>One obstacle to use proof tree preserving interpolation in the presence of quantifiers are mixed
terms. To illustrate the problem, let us consider the following example.</p>
      <p>Example 2 (Running Example). Take the sequence of formulas 1, 2, 3 with
1 : ∀.(ℎ()) =  2 : ∀. (()) ̸=  3 : ∀. () = .</p>
      <p>The conjunction of the three formulas is unsatisfiable, which can be seen as follows. Instantiating
1 with  gives (ℎ()) = . Instantiating 2 with ℎ() gives  ((ℎ())) ̸= . Substituting
(ℎ()) using the first equality yields  () ̸= , which is clearly a contradiction to 3.</p>
      <p>A mixed term is a term that uses symbols from at least two diferent partitions. In the example
above, a mixed term is ℎ(), because ℎ only occurs in 1 and  only occurs in 2. Mixed terms
may be generated during the instantiation process of quantified formulas. They can thus appear
in a resolution proof within instantiation clauses and theory lemmas but not in input clauses. A
resolution node may contain a mixed term if it was already contained in one of its antecedents.
Interpolation algorithms based on resolution proofs usually rely upon non-mixed terms. We do
not want to restrict the instantiation procedure to local terms as this would negatively efect
the performance of the solver. Transforming the proofs into localized proofs in the context of
sequence interpolation can break the inductivity property if not done in a consistent manner.
So it would require to either localize the proof for all partitions at once or to compute the
interpolants by repeated binary interpolation, which requires a new proof for each interpolant.</p>
      <p>We propose a method to handle mixed terms, simply by coloring them with some input
partition. This partition does not contain all symbols occurring in the term. Thus, we replace
subterms of the wrong color by fresh variables to purify the term. Each variable is defined by
adding an auxiliary equation to all partitions where the subterm’s outer function symbol occurs.</p>
      <sec id="sec-5-1">
        <title>4.1. Purification of Mixed Literals</title>
        <p>We proceed by first assigning a color to each term, and purify mixed terms afterwards. As a
symbol may appear in several partitions, we can assign one or multiple of these partitions as its
color. However, this decision may afect the number of quantifiers within the final interpolant.
We use the following coloring scheme to obtain as few quantifiers as possible. To color a term,
we start by coloring its subterms from bottom up. The color of a constant symbol corresponds to
the partitions it occurs in. For a function application  (1, . . . , ), we compute the intersection
of the partitions where  occurs and the colors of the terms 1, . . . , . If the intersection is
non-empty, it is used to color the term. Otherwise, if it is empty, meaning that the term contains
symbols for which there is no common partition. We color the term by all partitions in which
the function symbol  occurs. The whole literal is then colored as if the top-level terms occurred
in the partitions corresponding to the terms’ colors.</p>
        <p>If the literal ℓ colored with partition  contains a mixed term, it contains some constant 
or function application  (1, . . . , ) where  or  does not occur in the partition . In the
projection ℓ ⇂ , these constants and function applications are replaced by fresh variables
(1,...,). Each fresh variable is set equal to the term it stands for by an auxiliary equation of the
form (1,...,) =  (1 , . . . ,  ). The arguments of the function application are also replaced
by fresh variables and the corresponding auxiliary equations are added to their corresponding
partitions, i.e., the term is flattened.</p>
        <p>Example 3 (Purification) . Take the sequence of formulas 1, 2, 3 from the running example
(Example 2). Consider the literal ℓ ≡ (ℎ()) =  that stems from instantiating 1. The subterm
 occurs only in partition 2. The term ℎ() is mixed since ℎ only occurs in partition 1. We assign
it partition 1. The term (ℎ()) is now also assigned partition 1 as it is the intersection where 
occurs (1, 2) and what its argument ℎ() was assigned. The whole literal is treated as mixed
equality, since the left-hand side (ℎ()) of ℓ is colored 1 and the right-hand side  is colored 2.</p>
        <p>When computing the projection of the mixed equality ℓ ⇂ , we split ℓ first into (ℎ()) = 
and  = , as we explained in Section 3. In the projection, we further replace the subterm  on
the left-hand side (that does not match partition 1) with a fresh variable. The auxiliary equation
is added to partition 2, since this is the partition where  occurs.</p>
        <p>ℓ ≡ (ℎ()) =  :</p>
        <p>ℓ ⇂ 1 ≡ (ℎ()) = , ℓ ⇂ 2 ≡  =  ∧  = , ℓ ⇂ 3 ≡ ⊤
Consider the literal ℓ ≡  ((ℎ())) =  that stems from instantiating 2. As before, the term
(ℎ()) is assigned partition 1. The term  ((ℎ())) is mixed as  is only in partition 2, 3. So
the whole term gets assigned partitions 2, 3. Since the right-hand side  of the equality appears
only in partition 2, the whole literal is assigned partition 2.</p>
        <p>When computing the projection, we replace all subterms not occurring in partition 2 with
fresh variables, as well as their subterms. The auxiliary equations are added to the partitions
where the corresponding function symbol appears.
ℓ ≡  ((ℎ())) =  :</p>
        <p>ℓ ⇂ 1 ≡ ℎ = ℎ(), ℓ ⇂ 2 ≡  ((ℎ)) =  ∧  = , ℓ ⇂ 3 ≡ ⊤
Note that if ℎ occurred in multiple partitions, the auxiliary equation ℎ = ℎ() would be added
to all projections where ℎ occurs in the partition.</p>
      </sec>
      <sec id="sec-5-2">
        <title>4.2. Quantifier Introduction</title>
        <p>As mentioned in Section 3, our algorithm computes for each clause  in the resolution proof a
partial interpolant of 1 ∧ ¬ ⇂ 1, . . . ,  ∧ ¬ ⇂ . Interpolation of leaf clauses is performed
based on the color of literals, i.e., the interpolants are computed as if the literal occurred in the
partition corresponding to its color. This may introduce symbols from the wrong partition in the
interpolant, i.e., the resulting interpolant may violate the symbol condition. The algorithm then
replaces all terms containing symbols that are not allowed in the interpolant by their auxiliary
variable. In many cases, these auxiliary variables are allowed to occur in the partial interpolant,
since they satisfy the symbol condition with respect to the corresponding interpolation problem
1 ∧ ¬ ⇂ 1, . . . ,  ∧ ¬ ⇂ .</p>
        <p>We say that a variable  is supported by a clause  if the term that it replaced occurs within
a mixed term in , that is, if the auxiliary equation defining  is part of one of the projections
¬ ⇂ . Note that a variable may be unsupported even if the corresponding subterm occurs
in the clause, e.g.,  is not supported by  () ̸= , because the literal contains no mixed term
and thus there is no auxiliary equation for . A variable may only appear unbound in the
partial interpolant of a clause  if it is supported by . Thus, in a post-processing step, we bind
variables that are not supported by the current clause but still occur in a partial interpolant. An
existential quantifier is introduced around the interpolant  for each unsupported variable 
where the head function symbol  appears in . Similarly, a universal quantifier is introduced
for  if  appears in . If multiple variables become unsupported at the same time, we need
to be careful to add the quantifiers in the right order. If one of the variables corresponds to
a subterm of the other, then the variable for the outer term is defined using the variable of
the subterm. Hence its quantifier needs to appear after the quantifier for the variable of the
outer term. Since we add quantifiers from inside to outside, we need to add the quantifiers in
inverse dependency order, i.e., the quantifier for the variable corresponding to the outermost
term needs to be added first.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>5. Interpolation for Quantified Formulas</title>
      <p>In this section, we show how to compute partial sequence interpolants for the diferent clause
types involved in a proof of unsatisfiability for quantified input formulas. The overall algorithm
follows a simple common theme: first compute the interpolants using only the colors we
assigned to literals and ignore the symbol condition. Then introduce the fresh variable  for
every term  that violates the symbol condition. Finally, introduce quantifiers for each variable
 that is unsupported by the current clause, as outlined in Section 4.2. In the following, we
concretize this for the diferent kind of clauses in the resolution proof.</p>
      <p>Input Clauses. Input clauses cannot contain mixed terms. The interpolant  of an input
clause  is either ¬(¬ ∖ ) if the clause  is part of , or ¬ ∖  if  is part of . Here
¬ ∖  removes all literals from  that do not have any color from . For Pudlák’s algorithm
where each literal is colored with all partitions it occurs in, all literals are removed and the
interpolants are always either ⊤ or ⊥.
Instantiation Clauses. We say that an instantiation clause originates from the partition
in which its quantified formula occurs in. We extend the definition of ¬ ∖  to handle a
, -mixed equality  =  as follows: if both ,  are in , then (ℓ ∖ ) ≡ ⊤ , if both are
in , then (ℓ ∖ ) ≡ ℓ, and if  is in  and  in , then ( =  ∖ ) ≡  =  and
( ̸=  ∖ ) ≡ ¬ EQ (, ). Analogously, we define ¬ ∖ . The partial sequence interpolant
 is then computed in three steps.</p>
      <p>1. Set  to ¬(¬ ∖ ) if  originates from , and to ¬ ∖ , otherwise.
2. Replace every subterm  in  that must not occur in  according to the symbol condition
by its corresponding fresh variable .</p>
      <p>3. Introduce quantifiers for each variable that is not supported by .</p>
      <p>Theory Lemmas. Our proof tree can contain theory lemmas for transitivity and congruence.
1 ̸= 2 ∨ · · · ∨
1 ̸= ′1 ∨ · · · ∨
− 1 ̸=  ∨ 1 = 
 ̸= ′ ∨  (1, . . . , ) =  (′1, . . . , ′)
(transitivity)
(congruence)
Transitivity lemmas are interpolated by summarizing equality chains involving -colored
literals in the negation of the lemma. If the single equality of the transitivity lemma is mixed, the
chain EQ (, 1) ∧ 1 = · · · =  is summarized by EQ (, ). As the ends of the -colored
chains are also -colored (the boundary terms appear in -colored literals), this satisfies the
symbol condition except when a mixed term contains a subterm from a diferent partition. To
ifx the interpolant, all subterms  from the wrong partition are replaced by their corresponding
variable . Our construction guarantees that these variables are supported by .</p>
      <p>For congruence lemmas, the interpolant depends on the color of the equality  (1, . . . , ) =
 (′1, . . . , ′). If it is colored with a partition from , the interpolant is ¬(¬ ∖ ) and if it is
colored with a partition from , the interpolant is ¬ ∖ . If the equality is a mixed equality
where  (1, . . . , ) is from , then  is shared and the interpolant is EQ (,  (1, . . . , ))
where  is the variable for the projection of the mixed equality, and for  = 1, . . . ,  the term 
is the auxiliary variable of  = ′ , if that equality is mixed, or  if the equality is colored with
, or ′ if it is colored with . Again, the subterms  from the wrong partition are replaced by
their corresponding variable , which is supported by .</p>
      <p>Resolution Clauses. The partial interpolant for a resolution node is computed by the rule
(resolution) in Section 3. Since the resolution rule removes a literal from both antecedent clauses,
the resolvent may no longer support all variables occurring in the interpolant. So in the last
step, we add quantifiers for all unsupported variables as outlined in Section 4.2.
Example 4. We illustrate the algorithm on our running example (Example 2).</p>
      <p>1 : ∀.(ℎ()) =  2 : ∀. (()) ̸=  3 : ∀. () = 
The symbol  occurs in partitions 2–3,  in 1–2, ℎ in 1,  in 2. Our goal is to compute sequence
interpolants 1, 2 where 1 implies 1, and 1 and 2 imply 2, and 2 and 3 imply ⊥. Also 1
may only contain the symbol  and 2 only the symbol  .
⊤
The first input clause on the top left of the proof tree is from 1, i.e., it is in 1 and 2. By the
rule for input clauses its interpolants are ⊥, ⊥. The projections of the negated instantiation
clause Inst on the top right are
¬Inst ⇂ 1 ≡ (1∧EQ (, (ℎ())))
¬Inst ⇂ 2 ≡ (¬ EQ (, )∧ = )
¬Inst ⇂ 3 ≡ ⊤ .</p>
      <p>For 1, the quantified formula is in 1, and the interpolant is first set to ¬(¬ ∖ 1). Since
(ℎ()) =  is 1, 2-mixed, ((ℎ()) ̸=  ∖ 1) is ¬ EQ (, ) and 1 is set to EQ (, ). In the
ifnal step, the forbidden symbol  is replaced by its shared variable  yielding EQ (, ). The
variable  is supported by the clause and therefore not quantified. The interpolant 2 is just ⊥
as it contains only literals with colors 1–2. Resolving the first two clauses builds the disjunction
of the corresponding interpolants, because the literal is colored with partition 1.</p>
      <p>The equality in the congruence lemma, in the second row in Figure 1, is colored with partition 2.
Therefore, interpolant 1 is first set to ¬ ∖ 1, which is (ℎ()) = . As the function symbol
ℎ may not occur in the interpolant, the term ℎ() is replaced by its auxiliary variable ℎ. The
interpolant 2 is set to ⊥ since the lemma involves no literal colored with partition 2. The
result is (ℎ) = , ⊥, which is indeed a sequence interpolant of ℎ = ℎ() ∧ (ℎ()) = ,
 ((ℎ)) ̸=  () ∧  =  ∧  = , ⊤. The next resolution step involves a 1, 2-mixed literal.
Therefore, we use the third case (ruleEq ) of rule (resolution). The first interpolants of the
antecedents are combined by replacing EQ (, ) with (ℎ) = , yielding (ℎ) = . All
literals in the transitivity lemma (third row) are colored with partition 2. Therefore the resulting
interpolants are ⊤, ⊥. The resolution step combines the interpolants with conjunction or
disjunction, respectively, as the literal is colored with partition 2.</p>
      <p>The second instantiation clause is completely colored with partition 2 as is the corresponding
input clause. The interpolants are just ⊤, ⊥ and resolving them with the other branch does not
change the previous interpolants. However, since the literal  ((ℎ())) ̸=  gets removed in the
resolution step, ℎ and  are no longer supported. Therefore, quantifiers are introduced: the
inner existential quantifier for the 1-colored outermost term ℎ = ℎ() and the outer universal
quantifier for the 2-colored inner term  = . Note that although the clause still contains  in
the literal  () ̸= , this literal is not mixed and therefore does not support .</p>
      <p>The last instantiation clause is originating from 3, hence 1 is set to ¬ ∖ 1 (which is ⊤)
and 2 is set to ¬ ∖ 2. Since  () ̸=  is colored with partition 2, the second interpolant is
∀.(ℎ()) =  ⊥, ⊥</p>
      <p>¬(∀.(ℎ()) = ), (ℎ()) =  EQ(, ), ⊥
(ℎ()) =  EQ(, ), ⊥</p>
      <p>(ℎ()) ̸= ,  ((ℎ())) =  () (ℎ) = , ⊥
 ((ℎ())) =  () (ℎ) = , ⊥</p>
      <p>((ℎ())) ̸=  (),  () ̸= ,  ((ℎ())) =  ⊤, ⊥
 () ̸= ,  ((ℎ())) =  (ℎ) = , ⊥
∀. (()) ̸=  ⊤, ⊥</p>
      <p>¬(∀. (()) ̸= ),  ((ℎ())) ̸=  ⊤, ⊥
 ((ℎ())) ̸=  ⊤, ⊥
 () ̸=  ∀.∃ℎ.(ℎ) = , ⊥</p>
      <p>Input Clause
Instantiation Clause</p>
      <p>Theory Lemma</p>
      <p>Resolvent
∀. () =  ⊤, ⊤</p>
      <p>¬(∀. () = ),  () =  ⊤, ∃. () ̸= 
 () =  ⊤, ∃. () ̸= 
⊥ ∀.∃ℎ.(ℎ) = , ∃. () ̸= 
 () ̸= . In the next step,  is replaced by its auxiliary variable  and since this is not supported
by the clause, an existential quantifier must be introduced. So the partial sequence interpolant is
⊤, ∃. () ̸= . This is indeed a valid interpolant for the sequence ⊤,  () ̸= , ∀. () = .</p>
      <p>In the last two resolution steps, the interpolants are combined with conjunction or disjunction.
Since for each resolution step one of the interpolants is ⊤ or ⊥, the other interpolant is not
changed. The final sequence interpolant, i.e., ∀∃ℎ.(ℎ) = , ∃. () ̸= , can be found
in the annotation of the empty clause.</p>
    </sec>
    <sec id="sec-7">
      <title>6. Conclusion and Future Work</title>
      <p>We presented an algorithm to obtain inductive sequences of interpolants from
instantiationbased refutation proofs of quantified formulas in the theory of equality. In contrast to most
existing algorithms that allow for interpolation of quantified formulas, our approach works
on non-local proofs. It neither requires to restrict the inference done by the SMT solver, nor
does it require transformations of the proof tree. Mixed terms occurring in a proof tree due
to quantifier instantiations are directly treated using virtual purification. To obtain (partial)
interpolants satisfying the symbol condition, local terms are replaced by auxiliary variables
that are eventually bound by quantifiers.</p>
      <p>
        Our algorithm computes sequence interpolants from a single proof of unsatisfiability instead
of repeatedly performing binary interpolation on several proof trees. Implementation of the
algorithm in SMTInterpol [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] is ongoing work. We plan to extend our algorithm to tree
interpolants as well as to other theories including linear arithmetic.
      </p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgments</title>
      <p>This work was partially supported by the German Research Council (DFG) under HO 5606/1-2.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Henzinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Jhala</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Majumdar</surname>
          </string-name>
          ,
          <string-name>
            <surname>K. L. McMillan</surname>
          </string-name>
          ,
          <article-title>Abstractions from proofs</article-title>
          , in: N. D.
          <string-name>
            <surname>Jones</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          Leroy (Eds.),
          <source>Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL</source>
          <year>2004</year>
          , Venice, Italy, January
          <volume>14</volume>
          -
          <issue>16</issue>
          ,
          <year>2004</year>
          , ACM,
          <year>2004</year>
          , pp.
          <fpage>232</fpage>
          -
          <lpage>244</lpage>
          . URL: https://doi.org/10.1145/964001.964021. doi:
          <volume>10</volume>
          .1145/964001. 964021.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>K. L. McMillan</surname>
          </string-name>
          ,
          <article-title>Lazy abstraction with interpolants</article-title>
          , in: T. Ball, R. B.
          <string-name>
            <surname>Jones</surname>
          </string-name>
          (Eds.), Computer Aided Verification, 18th International Conference, CAV 2006, Seattle, WA, USA,
          <year>August</year>
          17-
          <issue>20</issue>
          ,
          <year>2006</year>
          , Proceedings, volume
          <volume>4144</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2006</year>
          , pp.
          <fpage>123</fpage>
          -
          <lpage>136</lpage>
          . URL: https://doi.org/10.1007/11817963_14. doi:
          <volume>10</volume>
          .1007/11817963\_
          <fpage>14</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>K. L. McMillan</surname>
          </string-name>
          ,
          <article-title>Quantified invariant generation using an interpolating saturation prover</article-title>
          , in: C. R. Ramakrishnan, J. Rehof (Eds.),
          <article-title>Tools and Algorithms for the Construction and Analysis of Systems</article-title>
          , 14th International Conference, TACAS 2008,
          <article-title>Held as Part of the Joint European Conferences on Theory and Practice of Software</article-title>
          ,
          <source>ETAPS</source>
          <year>2008</year>
          , Budapest, Hungary, March 29-April 6,
          <year>2008</year>
          . Proceedings, volume
          <volume>4963</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2008</year>
          , pp.
          <fpage>413</fpage>
          -
          <lpage>427</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -78800-3_
          <fpage>31</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -78800-3\_
          <fpage>31</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Heizmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hoenicke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Podelski</surname>
          </string-name>
          ,
          <article-title>Nested interpolants</article-title>
          , in: POPL, ACM,
          <year>2010</year>
          , pp.
          <fpage>471</fpage>
          -
          <lpage>482</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M. N.</given-names>
            <surname>Seghir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Podelski</surname>
          </string-name>
          , T. Wies,
          <article-title>Abstraction refinement for quantified array assertions</article-title>
          , in: J.
          <string-name>
            <surname>Palsberg</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          Su (Eds.),
          <source>Static Analysis, 16th International Symposium, SAS</source>
          <year>2009</year>
          , Los Angeles, CA, USA,
          <year>August</year>
          9-
          <issue>11</issue>
          ,
          <year>2009</year>
          . Proceedings, volume
          <volume>5673</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2009</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>18</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -03237-
          <issue>0</issue>
          _3. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -03237-0\_3.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Blanc</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovács</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Kragl</surname>
          </string-name>
          , Tree interpolation in Vampire, in: K. L.
          <string-name>
            <surname>McMillan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Middeldorp</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Voronkov (Eds.),
          <source>Logic for Programming</source>
          ,
          <source>Artificial Intelligence, and Reasoning - 19th International Conference, LPAR-19</source>
          , Stellenbosch, South Africa,
          <source>December 14-19</source>
          ,
          <year>2013</year>
          . Proceedings, volume
          <volume>8312</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2013</year>
          , pp.
          <fpage>173</fpage>
          -
          <lpage>181</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -45221-5_
          <fpage>13</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -45221-5\_
          <fpage>13</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>P.</given-names>
            <surname>Pudlák</surname>
          </string-name>
          ,
          <article-title>Lower bounds for resolution and cutting plane proofs and monotone computations</article-title>
          ,
          <source>J. Symb. Log</source>
          .
          <volume>62</volume>
          (
          <year>1997</year>
          )
          <fpage>981</fpage>
          -
          <lpage>998</lpage>
          . URL: https://doi.org/10.2307/2275583. doi:
          <volume>10</volume>
          .2307/2275583.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>K. L. McMillan</surname>
          </string-name>
          ,
          <article-title>An interpolating theorem prover</article-title>
          , in: K.
          <string-name>
            <surname>Jensen</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Podelski (Eds.),
          <article-title>Tools and Algorithms for the Construction and Analysis of Systems</article-title>
          , 10th International Conference, TACAS 2004,
          <article-title>Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2004</article-title>
          , Barcelona, Spain, March 29 - April 2,
          <year>2004</year>
          , Proceedings, volume
          <volume>2988</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2004</year>
          , pp.
          <fpage>16</fpage>
          -
          <lpage>30</lpage>
          . URL: https: //doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -24730-
          <issue>2</issue>
          _2. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -24730-2\_2.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>G.</given-names>
            <surname>Yorsh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Musuvathi</surname>
          </string-name>
          ,
          <article-title>A combination method for generating interpolants</article-title>
          , in: R. Nieuwenhuis (Ed.),
          <source>Automated Deduction - CADE-20, 20th International Conference on Automated Deduction</source>
          , Tallinn, Estonia,
          <source>July 22-27</source>
          ,
          <year>2005</year>
          , Proceedings, volume
          <volume>3632</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2005</year>
          , pp.
          <fpage>353</fpage>
          -
          <lpage>368</lpage>
          . URL: https://doi.org/10.1007/11532231_26. doi:
          <volume>10</volume>
          .1007/11532231\_
          <fpage>26</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Cimatti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Griggio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          ,
          <article-title>Eficient interpolant generation in satisfiability modulo theories</article-title>
          , in: C. R. Ramakrishnan, J. Rehof (Eds.),
          <article-title>Tools and Algorithms for the Construction and Analysis of Systems</article-title>
          , 14th International Conference, TACAS 2008,
          <article-title>Held as Part of the Joint European Conferences on Theory and Practice of Software</article-title>
          ,
          <source>ETAPS</source>
          <year>2008</year>
          , Budapest, Hungary, March 29-April 6,
          <year>2008</year>
          . Proceedings, volume
          <volume>4963</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2008</year>
          , pp.
          <fpage>397</fpage>
          -
          <lpage>412</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -78800-3_
          <fpage>30</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -78800-3\_
          <fpage>30</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Fuchs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Goel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Grundy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Krstic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <article-title>Ground interpolation for the theory of equality</article-title>
          , in: S. Kowalewski,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Philippou (Eds.),
          <article-title>Tools and Algorithms for the Construction and Analysis of Systems</article-title>
          , 15th International Conference, TACAS 2009,
          <article-title>Held as Part of the Joint European Conferences on Theory and Practice of Software</article-title>
          ,
          <source>ETAPS</source>
          <year>2009</year>
          , York, UK, March
          <volume>22</volume>
          -29,
          <year>2009</year>
          . Proceedings, volume
          <volume>5505</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2009</year>
          , pp.
          <fpage>413</fpage>
          -
          <lpage>427</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -00768-2_
          <fpage>34</fpage>
          . doi:
          <volume>10</volume>
          . 1007/978-3-
          <fpage>642</fpage>
          -00768-2\_
          <fpage>34</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Christ</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hoenicke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nutz</surname>
          </string-name>
          ,
          <article-title>Proof tree preserving interpolation</article-title>
          ,
          <source>in: TACAS</source>
          , volume
          <volume>7795</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2013</year>
          , pp.
          <fpage>124</fpage>
          -
          <lpage>138</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Christ</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hoenicke</surname>
          </string-name>
          ,
          <article-title>Proof tree preserving tree interpolation</article-title>
          ,
          <source>J. Autom. Reasoning</source>
          <volume>57</volume>
          (
          <year>2016</year>
          )
          <fpage>67</fpage>
          -
          <lpage>95</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J.</given-names>
            <surname>Christ</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hoenicke</surname>
          </string-name>
          ,
          <article-title>Instantiation-based interpolation for quantified formulae</article-title>
          , in: N.
          <string-name>
            <surname>Bjørner</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Nieuwenhuis</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Veith</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Voronkov (Eds.),
          <source>Decision Procedures in Software, Hardware and Bioware</source>
          ,
          <volume>18</volume>
          .
          <fpage>04</fpage>
          . -
          <lpage>23</lpage>
          .
          <fpage>04</fpage>
          .
          <year>2010</year>
          , volume
          <volume>10161</volume>
          of Dagstuhl Seminar Proceedings, Schloss Dagstuhl - Leibniz-Zentrum für Informatik, Germany,
          <year>2010</year>
          . URL: http://drops. dagstuhl.de/opus/volltexte/2010/2735/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Bonacina</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Johansson</surname>
          </string-name>
          ,
          <article-title>On interpolation in automated theorem proving</article-title>
          ,
          <source>J. Autom. Reason</source>
          .
          <volume>54</volume>
          (
          <year>2015</year>
          )
          <fpage>69</fpage>
          -
          <lpage>97</lpage>
          . URL: https://doi.org/10.1007/s10817-014-9314-0. doi:
          <volume>10</volume>
          .1007/ s10817-014-9314-0.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovács</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Voronkov</surname>
          </string-name>
          ,
          <article-title>First-order interpolation and interpolating proof systems</article-title>
          , in: T.
          <string-name>
            <surname>Eiter</surname>
          </string-name>
          , D. Sands (Eds.), LPAR-
          <volume>21</volume>
          , 21st International Conference on Logic for Programming,
          <source>Artificial Intelligence and Reasoning</source>
          , Maun, Botswana, May 7-
          <issue>12</issue>
          ,
          <year>2017</year>
          , volume
          <volume>46</volume>
          of EPiC Series in Computing, EasyChair,
          <year>2017</year>
          , pp.
          <fpage>49</fpage>
          -
          <lpage>64</lpage>
          . URL: https://easychair.org/publications/ paper/r2J.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>B.</given-names>
            <surname>Gleiss</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovács</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Suda</surname>
          </string-name>
          ,
          <article-title>Splitting proofs for interpolation</article-title>
          , in: L. de Moura (Ed.),
          <source>Automated Deduction - CADE 26 - 26th International Conference on Automated Deduction, Gothenburg, Sweden, August</source>
          <volume>6</volume>
          -
          <issue>11</issue>
          ,
          <year>2017</year>
          , Proceedings, volume
          <volume>10395</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2017</year>
          , pp.
          <fpage>291</fpage>
          -
          <lpage>309</lpage>
          . URL: https://doi.org/10.1007/ 978-3-
          <fpage>319</fpage>
          -63046-5_
          <fpage>18</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -63046-5\_
          <fpage>18</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>W.</given-names>
            <surname>Craig</surname>
          </string-name>
          ,
          <article-title>Three uses of the Herbrand-Gentzen theorem in relating model theory and proof theory</article-title>
          ,
          <source>J. Symb. Log</source>
          .
          <volume>22</volume>
          (
          <year>1957</year>
          )
          <fpage>269</fpage>
          -
          <lpage>285</lpage>
          . URL: https://doi.org/10.2307/2963594. doi:
          <volume>10</volume>
          .2307/2963594.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Bonacina</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Johansson</surname>
          </string-name>
          ,
          <article-title>Interpolation systems for ground proofs in automated deduction: a survey</article-title>
          ,
          <source>J. Autom. Reason</source>
          .
          <volume>54</volume>
          (
          <year>2015</year>
          )
          <fpage>353</fpage>
          -
          <lpage>390</lpage>
          . URL: https://doi.org/10.1007/ s10817-015-9325-5. doi:
          <volume>10</volume>
          .1007/s10817-015-9325-5.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovács</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Voronkov</surname>
          </string-name>
          ,
          <article-title>First-order theorem proving and Vampire</article-title>
          , in: N.
          <string-name>
            <surname>Sharygina</surname>
          </string-name>
          , H. Veith (Eds.),
          <source>Computer Aided Verification - 25th International Conference, CAV</source>
          <year>2013</year>
          ,
          <string-name>
            <given-names>Saint</given-names>
            <surname>Petersburg</surname>
          </string-name>
          , Russia,
          <source>July 13-19</source>
          ,
          <year>2013</year>
          . Proceedings, volume
          <volume>8044</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2013</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>35</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -39799-
          <issue>8</issue>
          _1. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -39799-8\_1.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>L. M. de Moura</surname>
          </string-name>
          , N. Bjørner,
          <string-name>
            <surname>Engineering DPLL</surname>
          </string-name>
          (T) +
          <article-title>saturation</article-title>
          , in: A.
          <string-name>
            <surname>Armando</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Baumgartner</surname>
          </string-name>
          , G. Dowek (Eds.),
          <source>Automated Reasoning, 4th International Joint Conference, IJCAR</source>
          <year>2008</year>
          , Sydney, Australia,
          <source>August 12-15</source>
          ,
          <year>2008</year>
          , Proceedings, volume
          <volume>5195</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2008</year>
          , pp.
          <fpage>475</fpage>
          -
          <lpage>490</lpage>
          . URL: https://doi.org/10.1007/ 978-3-
          <fpage>540</fpage>
          -71070-7_
          <fpage>40</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -71070-7\_
          <fpage>40</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovács</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Voronkov</surname>
          </string-name>
          ,
          <article-title>Interpolation and symbol elimination</article-title>
          , in: R. A.
          <string-name>
            <surname>Schmidt</surname>
          </string-name>
          (Ed.),
          <source>Automated Deduction - CADE-22, 22nd International Conference on Automated Deduction, Montreal, Canada, August 2-7</source>
          ,
          <year>2009</year>
          . Proceedings, volume
          <volume>5663</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2009</year>
          , pp.
          <fpage>199</fpage>
          -
          <lpage>213</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -02959-2_
          <fpage>17</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -02959-2\_
          <fpage>17</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bruttomesso</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghilardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ranise</surname>
          </string-name>
          ,
          <article-title>Quantifier-free interpolation in combinations of equality interpolating theories</article-title>
          ,
          <source>ACM Trans. Comput. Log</source>
          .
          <volume>15</volume>
          (
          <year>2014</year>
          ) 5:
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          :
          <fpage>34</fpage>
          . URL: https://doi.org/10.1145/2490253. doi:
          <volume>10</volume>
          .1145/2490253.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>J.</given-names>
            <surname>Christ</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hoenicke</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Nutz,
          <string-name>
            <surname>SMTInterpol:</surname>
          </string-name>
          <article-title>An interpolating SMT solver</article-title>
          ,
          <source>in: SPIN</source>
          , volume
          <volume>7385</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2012</year>
          , pp.
          <fpage>248</fpage>
          -
          <lpage>254</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>