<!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>
      <journal-title-group>
        <journal-title>SMT</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>From MBQI to Enumerative Instantiation and Back</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marek Dančo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Petra Hozzová</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mikoláš Janota</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Czech Technical University in Prague</institution>
          ,
          <addr-line>Prague</addr-line>
          ,
          <country country="CZ">Czech Republic</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2025</year>
      </pub-date>
      <volume>23</volume>
      <fpage>10</fpage>
      <lpage>11</lpage>
      <abstract>
        <p>This work investigates the relation between model-based quantifier instantiation (MBQI) and enumerative instantiation (EI) in Satisfiability Modulo Theories (SMT). MBQI operates at the semantic level and guarantees to ifnd a counterexample to a given a model. However, it may lead to weak instantiations. In contrast, EI strives for completeness by systematically enumerating terms at the syntactic level. However, such terms may not be counter-examples. Here we investigate the relation between the two techniques and report on our initial experiments of the proposed algorithm that combines the two.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;SMT</kwd>
        <kwd>quantifiers</kwd>
        <kwd>MBQI</kwd>
        <kwd>enumerative instantiation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
    </sec>
    <sec id="sec-2">
      <title>2. Preliminaries</title>
      <p>
        We assume a basic understanding of SMT [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In certain special cases, such as (linear) arithmetic, there
exist decision procedures for theories with quantifiers [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref13 ref9">9, 10, 11, 12, 13</xref>
        ]. In the general case, however,
quantifiers lead to undecidability and SMT solvers rely on quantifier instantiation techniques.
      </p>
      <p>We give a brief overview of MBQI. For simplicity of presentation, assume the input formula is given
in the form
where  is ground, and the only free variables in each   are ¯ . Let ℳ be a model of  that can
be expressed in the underlying theory, and let  ℳ be the evaluation of   in ℳ, meaning that each
non-variable symbol in   is replaced by its interpretation from ℳ. We then check the satisfiability of
(1)
 ∧ ⋀︁ ∀¯ .  

¬ ℳ,
which is quantifier-free and contains only the free variables ¯ and interpreted functions and predicates.
(We note this makes the satisfiablity check easier than checking (1), although for some theories it is still
undecidable).</p>
      <p>If the formulas ¬ ℳ for all  are unsatisfiable , then the original formula (1) is true in ℳ and hence
it is satisfiable. Further, we know that ℳ is a model of (1) and the algorithm terminates. If some ¬ ℳ
is satisfiable , then the values ¯ of ¯ give a counterexample to the model ℳ. We select ground terms ¯
that have the values ¯ in ℳ, instantiate   with ¯, and repeat the process with this instantiation, i.e.,
repeat with the following formula:</p>
    </sec>
    <sec id="sec-3">
      <title>3. Algorithm</title>
      <p>
        The key observation driving our work is that in arithmetic theories, MBQI has an infinite set of theory
constants, i.e. terms that denote value in a theory, that can possibly serve as a counter-example to
the current model. Instantiating by such arbitrary constants introduces new terms at the ground level.
On the other hand, reducing the number of new terms can have a significant positive impact on the
performance [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. To this end, we modify MBQI to search for counterexamples by enumerating ground
terms already present in the formula. We construct a relevant domain to guide the instantiation process.
If none of the terms in this domain serve as a counterexample, the algorithm proceeds to search for a
theory constant.
      </p>
      <p>
        Although the original MBQI paper [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] introduced an enumerative approach, MBQI implementations
in practice resort to instantiation by arbitrary theory constants; disregarding the theory constants and
uninterpreted function symbols occurring in the problem. This approach is suboptimal. For example,
consider the following unsatisfiable problem from the SMT-LIB non-incremental UFLIA benchmark set,
∀.  &gt; 0 →−
      </p>
      <p>() = − 1000 *  ( − 1),  (0) = 1,  (20) &lt; 0
To reach a contradiction, the solver must consider the sequence of numbers from 0 to 20. However,
both cvc5 and Z3, when running MBQI without E-matching, fail to conclude unsatisfiability.</p>
      <p>
        Algorithm 1 shows the general outline, following the recipe for MBQI (Section 2). As customary, the
algorithm assumes that the formula is split into a set of quantified subformulas ( ∀¯ .   ) and a ground
part , where   are quantifier-free and contain only free variables in ¯ . Such form can be obtained
by clausification [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], even though the formulas   do not necessarily have to be clauses.
      </p>
      <p>We note that we look for a new model of the ground part only after producing a counterexample for
all quantified formulas for which there was one. The instantiation step and the calculation of relevant
domains are explained further in Subsections 3.1 and 3.2, respectively.</p>
      <p>We assume that constructing the formula  ℳ is straightforward (line 9) as we work only with
arithmetic sorts and thus each element from the model has a uniquely corresponding interpreted
constant or function. This is strictly speaking not true because of the real domain, which is uncountable.
However, in practice, solvers only produce “well-behaved models”.</p>
      <sec id="sec-3-1">
        <title>3.1. Finding a Counterexample</title>
        <p>This section focuses on how a counterexample is chosen in Algorithm 1 (step 11). Consider a quantified
formula ∀ .  [¯ ] and a model ℳ. The objective is to construct a counterexample from the relevant
terms. There may be still too many of them, so we restrict those heuristically as follows.</p>
        <p>For each variable  in ¯ , first determine a total preference ordering on the terms in its relevant
domain  (, ) based on the current set of formulas. The ordering is a lexicographic ordering based
on how frequently does a term appears in the formula, its depth, and in which iteration the term was
added to the formula. We make the ordering total by appending a comparison based on the string
Algorithm 1: MBQI with Relevant Domain</p>
        <p>Input: A formula  ∧ ⋀︀ ∀¯ .   , where  is ground and each   has only the free variables ¯
Output: Satisfiability of the input formula
1 while true do
2 foreach  and each variable  in ¯ do
3 Construct the relevant domain  (, ) // Section 3.2
is-sat ← true
foreach   [¯ ] do</p>
        <p>Fix all non-variable symbols according to ℳ, obtaining  ℳ[¯ ]
if ¬ ℳ[¯ ] is satisfiable then</p>
        <p>Using  (, ), find ground terms ¯ s.t. ¬ ℳ[¯] is true
 ←  ∧   [¯]
is-sat ← false
if is-sat then
return satisfiable
// Section 3.1
representation of the term. Let (, ) denote the first third of the terms in  (, ) with respect to
this ordering. We call these the preferred terms.</p>
        <p>To look for a counterexample using the preferred terms, consider again the formula  ℳ[¯ ], where
all non-variable uninterpreted symbols in   are interpreted by their interpretation in the model ℳ.
Assume ¬ ℳ[¯ ] is satisfiable. Then, construct the following formula.</p>
        <p>¬ ℳ[¯ ] ∧
⋀︁</p>
        <p>⋁︁
 ∈ ¯  ∈ (,)
 = ℳ</p>
        <p>As in MBQI, the formula looks for a counterexample to the model ℳ, but additionally, it restricts that
the counterexample is equal to a vector of preferred terms (all this modulo what holds in the model ℳ).
Such counterexample might not exist. Therefore, we proceed by gradually loosening the domains of
variables from ¯ .</p>
        <p>If the formula (2) is satisfiable, extract the equalities  = ℳ that are satisfied in it and add the
corresponding instantiation   [¯ ↦→ ]¯ to the ground part, where each  is the least term such that
ℳ = ℳ. In case it is unsatisfiable, one of the new clauses must be unsatisfiable. We look for that
clause and extend the set of available terms to all terms in the relevant domain of the corresponding
variable. We do this by taking an arbitrary such clause from an unsatisfiable core of (2). This clause
corresponds to some variable . Next, we permit to range over the whole set of relevant domain, not
just the preferred terms. Let  = {} and   = ¯ ∖ . Next, construct the following formula.
¬ ℳ[¯ ] ∧
⋀︁</p>
        <p>⋁︁
 ∈    ∈ (,)
 = ℳ ∧ ⋀︁
⋁︁</p>
        <p>= ℳ
 ∈   ∈ (,)</p>
        <p>If formula (3) is satisfiable, we have a counterexample, as before. Otherwise, if (3) is unsatisfiable,
continue by loosening the set of possible terms to the whole relevant domain for variables in the
core, one by one. Efectively, moving variables from   to  in (3). It this process does not yield a
counterexample, i.e. if the relevant domain is too restrictive, we gradually drop the clauses altogether,
efectively allowing the underlying SMT solver to pick a theory constant (numeral). This is done
analogously as before by taking the core of (3) and removing variables from , for some  whose clause
appears in the core.
(2)
(3)</p>
        <p>
          The approach overall can be seen a mix of enumerative instantiation [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] and MBQI [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. In the first
phase, it looks for terms that are present in the current formula. If that fails it goes back to MBQI terms.
This happens per variable; therefore, the approach is not a simple union of the two.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Relevant Domain</title>
        <p>In arithmetic benchmarks, integers/reals are often used to model the set of some more specific objects,
e.g. addresses on the heap. The objective of relevant domain is to identify such scenarios. For example,
if we know that the function  : Z → Z operates on addresses, we want to instantiate  () only with
terms that also represent addresses, even though  ranges over all integers.</p>
        <p>
          Therefore, for each quantified variable, we construct a set of candidate terms that are relevant for its
instantiation. We call such a set the relevant domain. To compute these sets, we use the relevant domain
approach based on [
          <xref ref-type="bibr" rid="ref15 ref4 ref5">4, 5, 15</xref>
          ]. In our approach, however, the inferred sets only serve as “known relevant
options” for ground terms. Our approach is not complete — it is not always suficient to consider
only the terms in the relevant domain. In that case we disregard the relevant domain, allowing for
instantiation with an arbitrary value.
        </p>
        <p>We start by creating and initializing the following domains:
• , = ∅ for each formula   and each  in ¯ , called the relevant domain for ,
•  = ∅ for each uninterpreted function or predicate symbol  ,
• , = ∅ for each uninterpreted symbol  with arity  ≥ 1 and each 1 ≤  ≤ ,
•  = {} for each ground term  occurring anywhere in the input formula.</p>
        <p>Then we follow the rules shown below to merge these sets. We represent the merged set by a union
containing the sets it was formed from, and we abuse to notation to refer to the union by any of its
constituting sets. For example, the result of merging  and ,1 is { , ,1}, and the result of a
subsequent merge of  and  is { , ,1, }. To denote that 1 and 2 should be merged, we write
merge(1, 2).</p>
        <p>Although the sets , are initially empty, after applying the merging rules exhaustively, they may
become members of a union containing some sets of ground terms . Let us define  (, ) as
{ |  is a ground term ∧ ∃.  ∈  ∧ , ∈  } – i.e., the set of ground terms  whose corresponding
set  belongs to the same union as , . We consider all the terms of  (, ) to be relevant for
instantiating the quantified variable  in the subformula   . If  (, ) is empty, we add a default
theory constant to it; in our case of arithmetic, this default is 0.</p>
        <p>We now explain the merging rules. First, we define the function tls that assigns to each term2 its top
level symbol:
tls() =
⎧
⎪
⎪
⎪⎪⎪
⎪
⎪
⎪
⎪⎨
if  is a ground term 
if  is a quantified variable  in subformula 
if  is (1, . . . , ), where  is uninterpreted and  is not ground
⎪tls(1) if  is 1 * · · · *  and  is not ground
⎪
⎪⎪⎪⎪tls(1) if  is 1 + · · · +  and  is not ground
⎪
⎪
⎪⎩tls(1) if  is 1 − 2 and  is not ground
Next, we define the function  * that maps terms to their respective sets based on their top level symbols.</p>
        <p>⎧⎪ if tls() is a ground term 
 * () = ⎨, if tls() is a quantified variable  in subformula</p>
        <p>⎪⎩ if tls() is an uninterpreted function (predicate) symbol  and  is not ground
2In practice, SMT-LIB benchmarks typically do not include division operations, so we disregard such terms.</p>
        <p>The rules merge the introduced sets based on where a term appears within the formula. Specifically,
we distinguish between terms that occur as arguments of uninterpreted function symbols, arithmetic
operations, or relational operators such as {=, ≤ , &lt;}. We apply these rules based on term occurrences
in the whole formula  ∧ ⋀︀ ∀¯ .   .</p>
        <p>( (3, ) ≥ 4 + ()) ∧ (∀, .  (, ) &lt;  + ()) ∧ (∀. () = ( + 2))
⏟  ⏞ ⏟ ∀,.⏞1 ⏟ ∀. ⏞2
Because  and () are summed in  1, we apply the operation merge(,1, ). Similarly, because 
is also the first argument of  , we apply merge(,1, ,1). Using these two rules we get the union
{,1, ,1, }. After performing all the possible merges, we get two disjoint unions of sets.
{,1, ,1, ,  , 4, 3, (4+())}</p>
        <p>{,1, ,2, ,1, , , ,2, 2}
Since the first set contains both ,1 as well as 4, 3, and (4+()), we get that  (,1) =
{3, 4, 4 + ()}, and similarly  (,1) =  (,2) = {2, , }.</p>
        <p>Note that we repeat the merging after each instantiation step (line 12 of Algorithm 1). This is because
an instantiation may give us more information about the relevant domains. For example, instantiating
 = 2 in the last subformula yields a ground formula (2) = (4). After adding it to the ground part,
we apply merge(,1, 4) and merge the two unions of sets into one.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Preliminary Experiments</title>
      <p>
        We initially implemented the algorithm described in Section 3 as a standalone Python module using
PySMT [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], with Z3 [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] as its backend SMT solver for quantifier-free queries.
      </p>
      <p>
        Benchmarks. For preliminary evaluation, we used a subset of benchmarks from [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] based on
problems from the International Mathematical Olympiad, encoded in SMT-LIB [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] using UFNRA logic.
We chose 22 problems from this set for which we manually confirmed they are unsatisfiable.
Experimental setup. We compared the performance of our implementation with the SMT solvers
cvc5 [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], Z3 [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], and Interpol [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], and with the first-order theorem prover Vampire [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. For cvc5, we
used 5 instances with the following configurations, later denoted as cvc5-{1,2,3,4,5}:
1. default mode
2. --enum-inst
3. --mbqi
4. --no-e-matching --enum-inst
5. --simplification=none --enum-inst
We ran all the other solvers in default mode. The experiments were performed on machines with two
AMD EPYC 7513 32-Core processors and with 514 GiB RAM. We used the time limit of 600 seconds per
problem for each solver.
Results. We display the numbers of solved problems in Table 1. Overall, Vampire solves most problems.
Our prototype is more-or-less competitive with the SMT solvers, solving more problems than cvc5-1,
cvc5-3, and Interpol, one less problem than cvc5-2, cvc5-5, and Z3, and four problems less than cvc5-4.
Interestingly, our prototype also solves one problem which none of the other SMT solvers solve – the
only other tool to solve it is Vampire. We therefore conclude that our preliminary results show promise
and we plan to further develop our approach.
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion and Future Work</title>
      <p>
        In this paper we gave preliminary results on MBQI combined with a custom relevant domain approach.
The approach resembles enumerative instantiation [
        <xref ref-type="bibr" rid="ref2 ref4">4, 2</xref>
        ] and MBQI [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], as it focuses on the ground
terms currently present in the formula, and only abandons those if no counterexample (meaning a good
instantiation) exists. The approach can be naturally generalized to other non-arithmetic sorts.
      </p>
      <p>The current prototype shows promise since it allows solving small but dificult problems. We plan
to investigate improvements to the implementation that would enable solving also larger problem
instances and integrating it into an existing solver.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>This work is supported by the Czech MEYS under the ERC CZ project no. LL1902 POSTMAN and by
the European Union under the project ROBOPROX (reg. no. CZ.02.01.01/00/22_008/0004590) and by
the RICAIP project that has received funding from the European Union’s Horizon 2020 research and
innovation programme under grant agreement No 857306.</p>
    </sec>
    <sec id="sec-7">
      <title>Declaration on Generative AI</title>
      <p>The authors used ChatGPT and Grammarly for grammar and spell-checking. After using these tools,
the authors reviewed and edited content as needed and take full responsibility for the publication’s
content.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>L.</given-names>
            <surname>Kondylidou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Blanchette</surname>
          </string-name>
          ,
          <article-title>Augmenting model-based instantiation with fast enumeration</article-title>
          , in: A.
          <string-name>
            <surname>Gurfinkel</surname>
          </string-name>
          , M. Heule (Eds.),
          <article-title>Tools and Algorithms for the Construction and Analysis of Systems -</article-title>
          31st International Conference, TACAS 2025,
          <article-title>Held as Part of the International Joint Conferences on Theory and Practice of Software, ETAPS 2025, Hamilton</article-title>
          ,
          <string-name>
            <surname>ON</surname>
          </string-name>
          , Canada, May 3-
          <issue>8</issue>
          ,
          <year>2025</year>
          , Proceedings,
          <string-name>
            <surname>Part</surname>
            <given-names>I</given-names>
          </string-name>
          , volume
          <volume>15696</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2025</year>
          , pp.
          <fpage>85</fpage>
          -
          <lpage>103</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>031</fpage>
          -90643-5\_5.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Janota</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fontaine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <article-title>Fair and adventurous enumeration of quantifier instantiations, in: Formal Methods in Computer-Aided Design</article-title>
          , IEEE,
          <year>2021</year>
          , pp.
          <fpage>256</fpage>
          -
          <lpage>260</lpage>
          . doi:
          <volume>10</volume>
          . 34727/2021/ISBN.978-3-
          <fpage>85448</fpage>
          -046-4\_
          <fpage>35</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>D.</given-names>
            <surname>Detlefs</surname>
          </string-name>
          , G. Nelson,
          <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>
          (
          <year>2005</year>
          )
          <fpage>365</fpage>
          -
          <lpage>473</lpage>
          . doi:
          <volume>10</volume>
          .1145/1066100.1066102.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fontaine</surname>
          </string-name>
          ,
          <article-title>Revisiting enumerative instantiation, in: Tools and Algorithms for the Construction and Analysis of Systems (TACAS)</article-title>
          , volume
          <volume>10806</volume>
          , Springer,
          <year>2018</year>
          , pp.
          <fpage>112</fpage>
          -
          <lpage>131</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -89963-3\_7.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Ge</surname>
          </string-name>
          , L. M. de Moura,
          <article-title>Complete instantiation for quantified formulas in satisfiabiliby modulo theories</article-title>
          , in: Computer Aided Verification CAV,
          <year>2009</year>
          , pp.
          <fpage>306</fpage>
          -
          <lpage>320</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>642</fpage>
          -02658-4\_
          <fpage>25</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Brain</surname>
          </string-name>
          , G. Kremer,
          <string-name>
            <given-names>H.</given-names>
            <surname>Lachnitt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mohamed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mohamed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Niemetz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nötzli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ozdemir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Preiner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Sheng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y. Zohar,</surname>
          </string-name>
          <article-title>cvc5: A versatile and industrial-strength SMT solver, in: Tools and Algorithms for the Construction and Analysis of Systems, TACAS</article-title>
          , volume
          <volume>13243</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2022</year>
          , pp.
          <fpage>415</fpage>
          -
          <lpage>442</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>030</fpage>
          -99524-9\_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>L. M. de Moura</surname>
          </string-name>
          , N. Bjørner,
          <article-title>Z3: an eficient SMT solver, in: Tools and Algorithms for the Construction and Analysis of Systems</article-title>
          , 14th International Conference,
          <string-name>
            <surname>TACAS</surname>
          </string-name>
          <year>2008</year>
          ,
          <year>2008</year>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -78800-3\_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Seshia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <article-title>Satisfiability modulo theories</article-title>
          , in: A.
          <string-name>
            <surname>Biere</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Heule</surname>
          </string-name>
          , H. van Maaren, T. Walsh (Eds.),
          <source>Handbook of Satisfiability - Second Edition</source>
          , volume
          <volume>336</volume>
          <source>of Frontiers in Artificial Intelligence and Applications</source>
          , IOS Press,
          <year>2021</year>
          , pp.
          <fpage>1267</fpage>
          -
          <lpage>1329</lpage>
          . URL: https://doi.org/10.3233/FAIA201017. doi:
          <volume>10</volume>
          .3233/FAIA201017.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>V.</given-names>
            <surname>Weispfenning</surname>
          </string-name>
          ,
          <article-title>The complexity of linear problems in fields</article-title>
          ,
          <source>Journal of Symbolic Computation</source>
          <volume>5</volume>
          (
          <year>1988</year>
          )
          <fpage>3</fpage>
          -
          <lpage>27</lpage>
          . doi:
          <volume>10</volume>
          .1016/S0747-
          <volume>7171</volume>
          (
          <issue>88</issue>
          )
          <fpage>80003</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Tarski</surname>
          </string-name>
          ,
          <article-title>A Decision Method for Elementary Algebra and Geometry</article-title>
          , Univ. of California Press, Berkeley,
          <year>1951</year>
          . doi:https://doi.org/10.2307/jj.8501420, also in [? ].
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Davenport</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Heintz</surname>
          </string-name>
          ,
          <article-title>Real quantifier elimination is doubly exponential</article-title>
          ,
          <source>Journal of Symbolic Computation</source>
          <volume>5</volume>
          (
          <year>1988</year>
          )
          <fpage>29</fpage>
          -
          <lpage>35</lpage>
          . doi:
          <volume>10</volume>
          .1016/S0747-
          <volume>7171</volume>
          (
          <issue>88</issue>
          )
          <fpage>80004</fpage>
          -
          <lpage>X</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>N.</given-names>
            <surname>Bjørner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Janota</surname>
          </string-name>
          ,
          <article-title>Playing with quantified satisfaction</article-title>
          ,
          <source>in: International Conferences on Logic for Programming</source>
          ,
          <source>Artificial Intelligence and Reasoning (LPAR)</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>27</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Bonacina</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Graham-Lengrand</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Vauthier, QSMA: A new algorithm for quantified satisfiability modulo theory and assignment</article-title>
          ,
          <source>in: Automated Deduction - CADE 29</source>
          , Springer Nature Switzerland,
          <year>2023</year>
          , p.
          <fpage>78</fpage>
          -
          <lpage>95</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>031</fpage>
          -38499-
          <issue>8</issue>
          _
          <fpage>5</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Robinson</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Voronkov (Eds.),
          <source>Handbook of Automated Reasoning (in 2 volumes)</source>
          ,
          <article-title>Elsevier and</article-title>
          MIT Press,
          <year>2001</year>
          . URL: https://www.sciencedirect.com/book/9780444508133/ handbook-of-
          <source>automated-reasoning.</source>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>K.</given-names>
            <surname>Korovin</surname>
          </string-name>
          ,
          <article-title>Non-cyclic sorts for first-order satisfiability</article-title>
          , in: P. Fontaine,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ringeissen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A</given-names>
            .
            <surname>Schmidt</surname>
          </string-name>
          (Eds.),
          <source>Frontiers of Combining Systems</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2013</year>
          , pp.
          <fpage>214</fpage>
          -
          <lpage>228</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gario</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Micheli,
          <article-title>PySMT: a solver-agnostic library for fast prototyping of SMT-based algorithms</article-title>
          ,
          <source>in: SMT Workshop</source>
          <year>2015</year>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>C. E. Brown</surname>
            , K. Chvalovský,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Janota</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Olšák</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>Ratschan, SMT and functional equation solving over the reals: Challenges from the IMO</article-title>
          ,
          <year>2025</year>
          . URL: https://arxiv.org/abs/2504.15645. arXiv:
          <volume>2504</volume>
          .
          <fpage>15645</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fontaine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <source>The SMT-LIB Standard: Version 2</source>
          .6,
          <string-name>
            <surname>Technical</surname>
            <given-names>Report</given-names>
          </string-name>
          , Department of Computer Science, The University of Iowa,
          <year>2017</year>
          . Available at www.
          <source>SMT-LIB.org.</source>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <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>
          , in: A.
          <string-name>
            <given-names>F.</given-names>
            <surname>Donaldson</surname>
          </string-name>
          , D. Parker (Eds.),
          <source>Model Checking Software - 19th International Workshop, SPIN 2012</source>
          , Oxford, UK,
          <source>July 23-24</source>
          ,
          <year>2012</year>
          . Proceedings, volume
          <volume>7385</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2012</year>
          , pp.
          <fpage>248</fpage>
          -
          <lpage>254</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -31759-0\_
          <fpage>19</fpage>
          .
        </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.), Computer Aided Verification - 25th International Conference, CAV, volume
          <volume>8044</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2013</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>35</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -39799-8\_1.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>