<!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>cient Instantiation Techniques in SMT (Work In Progress)</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Haniel Barbosa</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>LORIA</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>INRIA</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Universite de Lorraine</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nancy</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>France haniel.barbosa@inria.fr</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>In SMT solving one generally applies heuristic instantiation to handle quanti ed formulas. This has the side e ect of producing many spurious instances and may lead to loss of performance. Therefore deriving both fewer and more meaningful instances as well as eliminating or dismissing, i.e., keeping but ignoring, those not signi cant for the solving are desirable features for dealing with rst-order problems. This paper presents preliminary work on two approaches: the implementation of an e cient instantiation framework with an incomplete goal-oriented search; and the introduction of dismissing criteria for heuristic instances. Our experiments show that while the former improves performance in general the latter is highly dependent on the problem structure, but its combination with the classic strategy leads to competitive results w.r.t. state-of-the-art SMT solvers in several benchmark libraries.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Heuristic instantiation is kept under control. Given their speed and the di culty of the rst-order reasoning
with interpreted symbols, heuristics are a necessary evil. To reduce side e ects, spurious instances are
dismissed. The criterion is their activity as reported by the ground solver, in a somehow hybrid approach
avoiding both the two-tiered combination of SAT solvers [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] and deletion [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>We also introduce a lifting of the classic congruence closure procedure to rst-order logic and show its suitability
as the basis of our instantiation techniques. Moreover, it is shown how techniques common in rst-order theorem
proving are being implemented in an SMT setting, such as using e cient term indexing and performing E
uni cation.</p>
      <sec id="sec-1-1">
        <title>Formal preliminaries</title>
        <p>Due to space constraints, we refer to the classic notions of many-sorted rst-order logic with equality as the basis
for the notation in this paper. Only the most relevant are mentioned.</p>
        <p>Given a set of ground terms T and a congruence relation ' on T, a congruence C over T is a set C fs '
t j s; t 2 Tg closed under entailment: for all s; t 2 T, C j= s ' t i s ' t 2 C. The congruence closure of C is
the least congruence on T containing C. Given a consistent set of ground equality literals E, two terms t1; t2
are said congruent i E j= t1 ' t2, which amounts to t1 ' t2 being in the congruence closure of the equalities in
E, and disequal i E j= t1 6' t2. The congruence class of a given term t, represented by [t], is the partition of T
induced by E in which all terms are congruent to t.
2</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Congruence Closure with Free Variables</title>
      <p>
        To better handle the quanti ed formulas during instantiation algorithms we have developed a Congruence Closure
with Free Variables (CCFV, for short), which extends the classic congruence closure procedure [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ] into
handling conjunctions of equality literals with free variables, performing rigid E-uni cation: nding solutions to
a given set of equations consistent with a set of equations E, assuming that every variable denotes a single term.
(RV)
(RT)
      </p>
      <p>L; x ' y k U
L k U [ fx ' yg</p>
      <p>L; x ' t k U
L k U [ fx ' tg
L; f (u) ' f (v) k U</p>
      <p>L; u ' v k U</p>
      <p>L; f (u) ' t k U
L; f (u) ' f (t1) k U</p>
      <p>: : :
L; f (u) ' f (tn) k U</p>
      <p>L; u ' f (u0) k U
L; u ' t1;1; f (u0) ' f (t01) k U</p>
      <p>: : :
L; u ' t1;m1 ; f (u0) ' f (t01) k U</p>
      <p>: : :
L; u ' tn;mn ; f (u0) ' f (t0n) k U
L k U
?
(Close)
(Decompose)
(Ematch)
(i)
(ii)
(i)
(ii)
L k U
&gt;
' 2 f'; 6'g
x or y is free in U , or E [ U j= x ' y
' 2 f'; 6'g
either x is free in U or E [ U j= x ' t
(Yield)
(i)</p>
      <p>L = ? or E j= L
(i)
(ii)
(iii)
(Euni)</p>
      <p>E j= t ' f (ti), for 1
' 2 f'; 6'g
f (ti) are ground terms from E</p>
      <p>i n
(i)
(ii)
(iii)
' 2 f'; 6'g
ti;j ; f (t0i) are ground terms
from E
E j= ti;j ' f (t0i),
for 1 i n, 1
j</p>
      <p>mi
(i)</p>
      <p>L is inconsistent modulo E or no other
rule can be applied</p>
      <p>Our procedure implements the rules1 shown in Table 1. To simplify presentation, it is assumed, without loss
of generality, that function symbols are unary. Rules are shown only for equality literals, as their extension
into uninterpreted predicates is straightforward. The calculus operates on conjunctive sets of equality literals
containing free variables, annotated with equality literals between these variables and ground terms or themselves.
Initially the annotations are empty, being augmented as the rules are applied and the input problem is simpli ed,
embodying its solution.</p>
      <sec id="sec-2-1">
        <title>CCFV algorithm</title>
        <p>Given a set of ground equality literals E and a set of non ground equality literals L whose free variables are X,
CCFV computes sets of equality literals U1; : : : ; Un, denoted uni ers. Each uni er associates variables from X
to ground terms and allows the derivation of ground substitutions 1; : : : ; k such that E j= L i, if any:
i =
x 7! t
x 2 X; U j= x ' t for some ground term t: If x is free
in U , t is a ground term selected from its sort class:
Since not necessarily all variables in X are congruent to ground terms in a given uni er U (denoted \free in U "),
more than one ground substitution may be obtained by assigning those variables to di erent ground terms in
their sort classes.</p>
        <p>A terminating strategy for CCFV is to apply the rules of Table 1 exhaustively over L, except that Ematch
may not be applied over the literals it introduces. There must be a backtracking when a given branch results in
Close, until being able to apply Yield. In those cases a uni er is provided from which substitutions solving the
given E -uni cation problem can be extracted.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Term Indexing</title>
        <p>Performing E -uni cation requires dealing with many terms, which makes the use of an e cient indexing technique
for fast retrieval of candidates paramount.</p>
        <p>The Congruence Closure procedure in veriT keeps a signature table, in which terms and predicate atoms are
kept modulo their congruence classes. For instance, if a ' b and both f (a) and f (b) appear in the formula,
only f (a) is kept in the signature table. Those are referred to as signatures and are the only relevant terms for
indexing, since instantiations into terms with the same signature are logically equivalent modulo the equalities
in the current context. The signature table is indexed by top symbol 2, such that each function and predicate
symbol points to all their related signatures. Those are kept sorted by congruence classes, to be amenable for
binary search. Bitmasks are kept to fast check whether a class contains signatures with a given top symbol, a
necessary condition for retrieving candidates from that class.</p>
        <p>
          A side e ect of building the term index from the signature table is that all terms are considered, regardless of
whether they appear or not in the current SAT solver model. To tackle this issue, an alternative index is built
directly from the currently asserted literals while computing on the y the respective signatures. Dealing directly
with the model also has the advantage of allowing its minimization, since the SAT solver generally asserts more
literals than necessary. Computing a prime implicant, a minimal partial model, can be done in linear time [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ].
Moreover, the CNF overhead is also cleaned: removing literals introduced by the non-equivalency preserving
CNF transformation the formula undergoes, applying the same process described in [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] for Relevancy.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Implementing E -uni cation</title>
        <p>The main data structure for CCFV is the \uni ers": for a set of variables X, an array with each position
representing a valuation for a variable x 2 X, which consists of:
a eld for the respective variable;
a ag to whether that variable is the representative of its congruence class;
a eld for, if the variable is a representative, the ground term it is equal to and a set of terms it is disequal
to; otherwise a pointer to the variable it is equal to, the default being itself.
1The calculus still needs to be improved, with a better presentation and the proofs of its properties, which are work in progress.
2Since top symbol indexing is not optimal, the next step is to implement ngerprint indexing. The current implementation keeps
the indexing as modular as possible to facilitate eventually changing its structure.</p>
        <p>Each uni er represents one of the sets U mentioned above. They are handled with a UNION-FIND algorithm
with path-compression. The union operation is made modulo the congruence closure on the ground terms and
the current assignments to the variables in that uni er, which maintains the invariant of it being a consistent
set of equality literals.</p>
        <p>
          The rules in Table 1 are implemented as an adaptation of the recursive descent E-uni cation algorithm in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ],
heavily depending on the term index described shown above for optimizing the search. Currently it does not
have a dedicated index for performing uni cation, rather relying in the DAG structure of the terms. To avoid
(usually expensive) re-computations, memoization is used to store the results of E -uni cations attempts, which
is particularly useful when looking for uni ers for, e.g., f (x) ' g(y) in which both \f " and \g " have large term
indexes. For now these \uni cation jobs" are indexed by the literal's polarity and participating terms, not taking
into account their structure.
3
3.1
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Instantiation Framework</title>
      <sec id="sec-3-1">
        <title>Goal-oriented instantiation</title>
        <p>
          In the classic architecture of SMT solving, a SAT solver enumerates boolean satis able conjunctions of literals
to be checked for ground satis ability by decision procedures for a given set of theories. If these models are not
refuted at the ground level they must be evaluated at the rst-order level, which is not a decidable problem in
general. Therefore one cannot assume to have an e cient algorithm to analyze the whole model and determine
if it can be refuted. This led to the regular heuristic instantiation in SMT solving being not goal-oriented: its
search is based solely on pattern matching of selected triggers [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], without further semantic criteria, which can
be performed quickly and then revert the reasoning back to the e cient ground solver.
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], Reynolds et al. presented an e cient incomplete goal-oriented instantiation technique that evaluates
a quanti ed formula, independently, in search for con icting instances : given a satis able conjunctive set of
ground literals E, a set of quanti ed formulas Q and some 8x: 2 Q it searches for a ground substitution such
that E j= : . Such substitutions are denoted ground con icting, with con icting instances being such that
8x: ! refutes E [ Q.
        </p>
        <p>
          Since the existence of such substitutions is an NP-complete problem equivalent to Non-simultaneous rigid
E-uni cation [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], the CCFV procedure is perfectly suited to solve it. Each quanti ed formula 8x: 2 Q is
converted into CNF and CCFV is applied for computing sequences of substitutions3 0; : : : ; k such that, for
:
= l1 ^
^ lk,
0 = ?; i 1
i and E j= li i
which guarantees that E j= : k and that the instantiation lemma 8x: ! k refutes E [ Q. If any literal
li+i is not uni able according to the uni cations up to li, there are no con icting instances for 8x: .
        </p>
        <p>Currently our implementation applies a breadth- rst search on the conjunction of non-ground literals,
computing all uni ers for a given literal l 2 : before considering the next one. Memory consumption is an issue
due to the combinatorial explosion that might occur when merging sets of uni ers from di erent literals. A
more general issue is simply the time required for nding the uni ers of a given literal, which can have a huge
search space depending on the number of indexed terms. To minimize these problems customizable parameters
set thresholds both on the number of potential combinations and of terms to be considered.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Heuristic instantiation with instances dismissal</title>
        <p>
          Although goal-oriented search avoids heuristic instantiation in many cases, triggers and pattern-matching are still
the backbone of our framework. A well known side e ect of them is the production of many spurious instances
which not only interfere with the performances of both the ground and instantiation modules but also may lead
to matching loops : triggers generating instances which are used solely to produce new instances in an in nite
chain. To avoid this issues, de Moura et al. [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] mention how they perform clause deletion, during backtracking,
of instances which were not part of a con ict. However, this proved to be an engineering challenge in veriT, since
its original architecture does not easily allow deletion of terms from the ground solver.
        </p>
        <p>3Since CCFV is non-proof con uent calculus, as choices may need to be made whenever a matching or uni cation must be
performed, backtracks are usually necessary for exploring di erent options.</p>
        <p>To circumvent this problem, instead of being truly deleted instances are simply dismissed : by labeling them
with instantiation levels 4, at a given level n only instances whose level is at most n 1 are considered. This is
done by using the term indexing from the SAT model and eliminating literals whose instantiation level is above
the threshold. At each instantiation round, the level is de ned as the current level plus one. At the beginning
of the solving all clauses are assigned level 0, the starting value for the instantiation level. At the end of an
instantiation round, the SAT solver is noti ed that at that point in the decision tree there was an instantiation,
so that whenever there is a backtracking to a point before such a mark the instantiation level is decremented, at
the same time that all instances which have participated in a con ict are promoted to \level 0". This ensures
that those instances will not be dismissed for instantiation, which somehow emulates clause deletion. With this
technique, however, the ground solver will still be burdened by the spurious instances, but they also will not
need to be regenerated in future instantiation rounds.</p>
        <p>: : :
?</p>
        <p>I1
?1
: : :</p>
        <p>I2
?2</p>
        <p>I10
: : :
: : :
I20
?3</p>
        <p>Consider in Figure 1 an example of instance dismissal. I1 marks an instantiation happening at level 1, in which
all clauses from the original formula are considered for instantiation. Those lead to a con ict and a backtrack
to a point before I1, which decrements the instantiation level to 0. All instances from I1 which were part of the
con ict in ?1 are promoted to level 0, the rest kept with level 1. At I10 only terms in clauses with level 0 are
indexed. Since subsequently there is no backtracking to a point before I10 , the instantiation level is increased to
1. At I2 all clauses of level 1 are considered, thus including those produced both in I1 and I10 . After a backtrack,
the level is decremented to 1 and the instances participating in ?2 are promoted. This way at I20 only the
promoted instances from the previous round are considered. Then the ground solver reaches a con ict in ?3 and
cannot produce any more models, concluding unsatis ability.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Experiments</title>
      <p>
        The above techniques have been implemented in the SMT solver veriT [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], which previously o ered support for
quanti ed formulas solely through nave trigger instantiation, without further optimizations5. The evaluation
was made on the \UF", \UFLIA", \UFLRA" and \UFIDL" categories of SMT-LIB [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], which have 10; 495
benchmarks annotated as unsatis able. They consist mostly of quanti ed formulas over uninterpreted functions
as well as equality and linear arithmetic. The categories with bit vectors and non-linear arithmetic are currently
not supported by veriT and in those in which uninterpreted functions are not predominant the techniques shown
here are not quite as e ective yet. Our experiments were conducted using machines with 2 CPUs Intel Xeon
E5-2630 v3, 8 cores/CPU, 126GB RAM, 2x558GB HDD. The timeout is set for 30 seconds, since our goal is
evaluating SMT solvers as backends of veri cation and ITP platforms, which require fast answers.
      </p>
      <p>
        The di erent con gurations of veriT are identi ed in this section according to which techniques they have
activated:
veriT: the solver relying solely on nave trigger instantiation;
veriT i: the solver with CCFV and the signature table indexed;
veriT ig: besides the above, uses the goal-oriented search for con icting instances;
4This is done much in the spirit of [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], although their labeling does not take into account the interactions with the SAT solver
and is aimed at preventing matching loops, not towards \deletion".
      </p>
      <p>5A development version is available at http://www.loria.fr/~hbarbosa/veriT-ccfv.tar.gz
veriT igd: does the term indexing from the SAT solver and uses the goal-oriented search and instance
dismissal.</p>
      <p>
        Our new implementations were also evaluated against the SMT solvers Z3 [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] (version 4.4.2) and CVC4 [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]
(version 1.5), both based on instantiation for handling quanti ed formulas. The results are summarized in Table 2,
excluding categories whose problems are trivially solved by all systems, which leaves 8; 701 for consideration.
      </p>
      <p>While veriT ig and veriT igd solve a similar number of problems in the same categories (with a small advantage
to the latter), it should be noted that they have quite diverse results depending on the benchmark (a comparison
is shown in Figure 4 at Appendix A). Each con guration solves 150 problems exclusively. This indicates the
potential to use both the term indexes, from the signature table and from the SAT solver model with instance
dismissal, during the solving.</p>
      <p>Regarding overall performance, CVC4 solves the most problems, being the more robust SMT solver for
instantiation and also applying a goal-oriented search for con icting instances. Both con gurations of veriT solve
approximately the same number of problems as Z3, although mostly because of the better performance on the
sledgehammer benchmarks, which have less theory symbols. There are 124 problems solved by veriT igd that
neither CVC4 nor Z3 solve, while veriT ig solves 115 that neither of these two do.</p>
      <p>Figure 3 shows how the better veriT con guration, with the goal-oriented search and instance dismissal,
performs against the other solvers. There are many problems solved exclusively by each system, which indicates
the bene t of combining veriT with those systems them in a portfolio when trying to quickly solve a particular
problem: while CVC4 alone solves 92% of the considered benchmarks in 30s, by giving each of the four
compared systems 7s is enough to solve 97% of them.</p>
      <p>10
0.1
0.1
1
veriT_igd</p>
      <p>10
(a) Z3 vs veriT igd
10
0.1
1
veriT_igd</p>
      <p>10
(b) CVC4 vs veriT igd</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion and future work</title>
      <p>There is still room for improvement in our instantiation framework. Particularly, a better understanding of the
instance dismissal e ects is still required. Further analyzing the clauses activity would lead to a more re ned
promotion strategy and possibly better outcomes. Nevertheless, we believe that our preliminary results are
promising.</p>
      <p>Regarding the term indexing, besides improving the data structures our main goal is performing it
incrementally : by indexing the literals from the SAT model it is not necessary to thoroughly recompute the index at
each instantiation round. It is su cient to simply remove or add terms, as well as update signatures, according
to how the model has changed. The same principle may be applied to the memoization of \uni cation jobs":
an incremental term index would allow updating the resulting uni ers accordingly, signi cantly reducing the
instantiation e ort over rounds with similar indexes.</p>
      <p>
        Our goal-oriented instantiation has a very limited scope: currently con icting instances can only be found
when a single quanti ed formula is capable of refuting the model. As it has been shown in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] and also in our
own experiments this is enough to provide large improvements over trigger instantiation, but for many problems
it is still insu cient. We intend to combine CCFV with the Connection Calculus [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], a complete goal-oriented
proof procedure for rst-order logic, in an e ort for having a broader approach for deriving con icting instances.
This would present a much more complex search space than the one our strategy currently handles. Therefore
the trade-o between expressivity and cost has to be carefully evaluated.
      </p>
      <p>
        Applying di erent strategies in a portfolio approach is highly bene cial for solving more problems, but it could
be even more so if di erent con gurations were to communicate. Attempting pseudo-concurrent architectures
such as described in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] in veriT is certainly worth considering.
      </p>
      <sec id="sec-5-1">
        <title>Acknowledgments</title>
        <p>I would like to thank my supervisors Pascal Fontaine and David Deharbe for all their help throughout the
development of this work and comments on the article.</p>
        <p>Experiments presented in this paper were carried out using the Grid'5000 testbed, supported by a
scienti c interest group hosted by Inria and including CNRS, RENATER and several Universities as well as other
organizations (see https://www.grid5000.fr).
veriT_ig</p>
        <p>10</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Snyder</surname>
          </string-name>
          .
          <article-title>Uni cation theory</article-title>
          .
          <source>In Handbook of Automated Reasoning (in 2 volumes)</source>
          , pages
          <fpage>445</fpage>
          {
          <fpage>532</fpage>
          .
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bachmair</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Ganzinger</surname>
          </string-name>
          .
          <article-title>Rewrite-Based Equational Theorem Proving with Selection and Simpli cation</article-title>
          .
          <source>J. Log. Comput.</source>
          ,
          <volume>4</volume>
          (
          <issue>3</issue>
          ):
          <volume>217</volume>
          {
          <fpage>247</fpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. L.</given-names>
            <surname>Conway</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Deters</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Hadarean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Jovanovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>King</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          . CVC4. In G. Gopalakrishnan and S. Qadeer, editors,
          <source>Computer Aided Veri cation: 23rd International Conference, CAV</source>
          <year>2011</year>
          ,
          <article-title>Snowbird</article-title>
          ,
          <string-name>
            <surname>UT</surname>
          </string-name>
          , USA, July
          <volume>14</volume>
          -
          <issue>20</issue>
          ,
          <year>2011</year>
          . Proceedings, pages
          <volume>171</volume>
          {
          <fpage>177</fpage>
          , Berlin, Heidelberg,
          <year>2011</year>
          . Springer Berlin Heidelberg.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Seshia</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          .
          <article-title>Satis ability Modulo Theories</article-title>
          . In A. Biere,
          <string-name>
            <given-names>M. J. H.</given-names>
            <surname>Heule</surname>
          </string-name>
          ,
          <string-name>
            <surname>H. van Maaren</surname>
          </string-name>
          , and T. Walsh, editors,
          <source>Handbook of Satis ability</source>
          , volume
          <volume>185</volume>
          of Frontiers in
          <source>Arti cial Intelligence and Applications</source>
          , chapter
          <volume>26</volume>
          , pages
          <fpage>825</fpage>
          {
          <fpage>885</fpage>
          . IOS Press,
          <year>Feb</year>
          .
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Stump</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          .
          <article-title>The SMT-LIB Standard: Version 2.0</article-title>
          . In A. Gupta and D. Kroening, editors,
          <source>Proceedings of the 8th International Workshop on Satis ability Modulo Theories (Edinburgh, UK)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>T.</given-names>
            <surname>Bouton</surname>
          </string-name>
          ,
          <string-name>
            <surname>D. C. B. de Oliveira</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Deharbe</surname>
            , and
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Fontaine</surname>
          </string-name>
          . veriT:
          <article-title>An Open, Trustable and E cient SMT-Solver</article-title>
          .
          <source>In Automated Deduction - CADE-22, 22nd International Conference on Automated Deduction, Montreal, Canada, August 2-7</source>
          ,
          <year>2009</year>
          . Proceedings, pages
          <volume>151</volume>
          {
          <fpage>156</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7] L. de Moura and
          <string-name>
            <surname>N.</surname>
          </string-name>
          <article-title>Bj rner. E cient E-Matching for SMT Solvers</article-title>
          . In F. Pfenning, editor,
          <source>Automated Deduction CADE-21</source>
          , volume
          <volume>4603</volume>
          of Lecture Notes in Computer Science, pages
          <volume>183</volume>
          {
          <fpage>198</fpage>
          . Springer Berlin Heidelberg,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>L. M. de Moura</surname>
            and
            <given-names>N.</given-names>
          </string-name>
          <article-title>Bj rner. Z3: An E cient SMT Solver</article-title>
          .
          <article-title>In 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, pages
          <volume>337</volume>
          {
          <fpage>340</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D.</given-names>
            <surname>Deharbe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fontaine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. Le</given-names>
            <surname>Berre</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Mazure</surname>
          </string-name>
          .
          <article-title>Computing Prime Implicants</article-title>
          .
          <source>In FMCAD - Formal Methods in Computer-Aided Design</source>
          <year>2013</year>
          , pages
          <fpage>46</fpage>
          {
          <fpage>52</fpage>
          ,
          <string-name>
            <surname>Portland</surname>
          </string-name>
          , United States, Oct.
          <year>2013</year>
          . IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Detlefs</surname>
          </string-name>
          , G. Nelson, and
          <string-name>
            <given-names>J. B.</given-names>
            <surname>Saxe</surname>
          </string-name>
          .
          <article-title>Simplify: A Theorem Prover for Program Checking</article-title>
          .
          <source>J. ACM</source>
          ,
          <volume>52</volume>
          (
          <issue>3</issue>
          ):
          <volume>365</volume>
          {
          <fpage>473</fpage>
          , May
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Ge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          . Solving Quanti ed
          <article-title>Veri cation Conditions Using Satis ability Modulo Theories</article-title>
          . In F. Pfenning, editor,
          <source>Automated Deduction CADE-21</source>
          , volume
          <volume>4603</volume>
          of Lecture Notes in Computer Science, pages
          <volume>167</volume>
          {
          <fpage>182</fpage>
          . Springer Berlin Heidelberg,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>K. R. M. Leino</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Musuvathi</surname>
            , and
            <given-names>X.</given-names>
          </string-name>
          <string-name>
            <surname>Ou</surname>
          </string-name>
          .
          <article-title>A Two-tier Technique for Supporting Quanti ers in a Lazily Proof-explicating Theorem Prover</article-title>
          .
          <source>In Proceedings of the 11th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS'05</source>
          , pages
          <fpage>334</fpage>
          {
          <fpage>348</fpage>
          , Berlin, Heidelberg,
          <year>2005</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>L.</given-names>
            <surname>Moura</surname>
          </string-name>
          and
          <string-name>
            <surname>N.</surname>
          </string-name>
          <article-title>Bj rner</article-title>
          . Engineering DPLL(T) +
          <article-title>Saturation</article-title>
          .
          <source>In Proceedings of the 4th International Joint Conference on Automated Reasoning, IJCAR '08</source>
          , pages
          <fpage>475</fpage>
          {
          <fpage>490</fpage>
          , Berlin, Heidelberg,
          <year>2008</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>G.</given-names>
            <surname>Nelson</surname>
          </string-name>
          and
          <string-name>
            <given-names>D. C.</given-names>
            <surname>Oppen</surname>
          </string-name>
          .
          <article-title>Fast Decision Procedures Based on Congruence Closure</article-title>
          .
          <source>J. ACM</source>
          ,
          <volume>27</volume>
          (
          <issue>2</issue>
          ):
          <volume>356</volume>
          {
          <fpage>364</fpage>
          ,
          <string-name>
            <surname>Apr</surname>
          </string-name>
          .
          <year>1980</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nieuwenhuis</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Oliveras</surname>
          </string-name>
          .
          <article-title>Fast congruence closure and extensions</article-title>
          .
          <source>Information and Computation</source>
          ,
          <volume>205</volume>
          (
          <issue>4</issue>
          ):
          <volume>557</volume>
          {
          <fpage>580</fpage>
          ,
          <year>2007</year>
          . Special Issue: 16th
          <source>International Conference on Rewriting Techniques and Applications.</source>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nieuwenhuis</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Rubio</surname>
          </string-name>
          .
          <article-title>Paramodulation-Based Theorem Proving</article-title>
          . In A. Robinson and
          <string-name>
            <surname>A</surname>
          </string-name>
          . Voronkov, editors,
          <source>Handbook of automated reasoning</source>
          , volume
          <volume>1</volume>
          , pages
          <fpage>371</fpage>
          {
          <fpage>443</fpage>
          .
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          .
          <article-title>Restricting backtracking in connection calculi</article-title>
          .
          <source>AI Commun</source>
          .,
          <volume>23</volume>
          (
          <issue>2-3</issue>
          ):
          <volume>159</volume>
          {
          <fpage>182</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>G.</given-names>
            <surname>Reger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Tishkovsky</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Voronkov</surname>
          </string-name>
          .
          <article-title>Cooperating Proof Attempts</article-title>
          .
          <source>In Automated Deduction - CADE-25 - 25th International Conference on Automated Deduction</source>
          , Berlin, Germany,
          <source>August 1-7</source>
          ,
          <year>2015</year>
          , Proceedings, pages
          <volume>339</volume>
          {
          <fpage>355</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          , and L. de Moura.
          <article-title>Finding Con icting Instances of Quanti ed Formulas in SMT</article-title>
          .
          <source>In Proceedings of the 14th Conference on Formal Methods in Computer-Aided Design, FMCAD '14</source>
          , pages
          <fpage>31</fpage>
          :
          <fpage>195</fpage>
          {
          <fpage>31</fpage>
          :
          <fpage>202</fpage>
          , Austin, TX,
          <year>2014</year>
          . FMCAD Inc.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Tiwari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Bachmair</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Ruess. Rigid</surname>
          </string-name>
          E-Uni cation Revisited. In D. McAllester, editor,
          <source>Automated Deduction - CADE-17</source>
          , volume
          <volume>1831</volume>
          <source>of Lecture Notes in Computer Science</source>
          , pages
          <volume>220</volume>
          {
          <fpage>234</fpage>
          . Springer Berlin Heidelberg,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>