<!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>Challenges in SMT Proof Production and Checking for Arithmetic Reasoning</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Haniel Barbosa</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Universidade Federal de Minas Gerais</institution>
          ,
          <addr-line>Belo Horizonte</addr-line>
          ,
          <country country="BR">Brazil</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Satisfiability Modulo Theories (SMT) solvers are widely used as backbones of formal methods tools in a variety of applications, often safety-critical ones. These tools rely on the solver's correctness to guarantee the validity of their results. Producing and checking proofs is the de facto standard to ensure the correctness of SMT solvers independently from implementations, which are often prohibitively dificult to verify. Arithmetic reasoning is one of the foundations of SMT reasoning, and therefore it is essential to support proof production and checking for it. In this extended abstract, to accompany a keynote talk at the 2023 SC-Square Workshop, we survey recent work (both the author's and from the literature) and discuss challenges on the production and checking of proofs from SMT solvers for arithmetic reasoning.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Satisfiability Modulo Theories</kwd>
        <kwd>Symbolic Computation</kwd>
        <kwd>Proof Production</kwd>
        <kwd>Proof Checking</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>State-of-the-art SMT solvers, in order to optimize performance, generally have large and complex
codebases written in system languages. This makes it hard to guarantee that the solver results
are not compromised by implementation issues, which can happen despite the best eforts of
developers. To increase trust, a possible solution is to formally verify or to qualify the solvers.
However, these approaches are costly and once accomplished tend to “freeze” the systems, since
changes require a new verification or qualification process. Moreover, the sheer complexity of
the task frequently leads to compromises, with systems being less performant than the state of
the art, thus hindering their usability.</p>
      <p>
        An alternative is to make confidence in the results independent from the implementation via
machine-checkable certificates of the correctness of these results. For SMT solvers, certificates
are models, for satisfiable results, and proofs for unsatisfiable results. While satisfiable results
generally denote a desired condition is not valid, unsatisfiable results ensure it is, which
significantly increases the importance of proofs. But while model production is well established
in state-of-the-art SMT solving (although in the presence of, for example, transcendental
functions, there are challenges [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]), producing proofs is not.
      </p>
      <p>
        The main challenge for producing proofs is to justify the combination of heterogeneous,
theory-specific algorithms used by solvers to derive unsatisfiability, while keeping the solver
performant and providing enough details to allow scalable proof checking, i.e., checking that
is fundamentally simpler than solving. We have tackled this issue in previous work [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ] and
nowadays the cvc5 SMT solver [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is a state-of-the-art solver that can efectively produce proofs
for significant parts of their reasoning, without sacrificing performance too much.
      </p>
      <p>
        Once proofs are produced, the challenge is to check they are correct. Proof checkers are given
the proofs produced by the solvers and validate whether the steps in the proof are correct with
relation to the proof calculus of which the proof is an instance. To maximize trustworthiness,
the proof checker should be small and simple (ideally, even formally verified). Alternatively,
the proof can be embedded in a highly trusted system such as a skeptical interactive theorem
prover. The SMT community is increasingly embracing this approach, with proof production
becoming a major focus in recent years [
        <xref ref-type="bibr" rid="ref3 ref5">3, 5</xref>
        ].
      </p>
      <p>
        When considering interactive theorem provers or formally verified checkers as the targets of
SMT proofs, the dificulty is to embed in these systems the formal calculus representing the
proofs, which requires proving this calculus correct with relation to the logic of these systems.
This task is already complex for the overall reasoning performed by SMT solvers [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ], but
even more so for the formal calculi used when solving for some theories, such as strings [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
and, specially, non-linear arithmetic [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>In this paper we discuss the state of the art and current challenges in proof production and
proof checking for SMT solvers, in particular for their arithmetic reasoning.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Proof Production in SMT Solvers</title>
      <p>
        Recently [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] we introduced a flexible proof-production architecture for SMT solvers, which is
shown in Figure 1 (from [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]). We summarize this architecture below, but full details can be seen
in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        The proof architecture is intertwined with the CDCL( ) architecture [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], the most common
architecture of SMT solvers. This architecture for producing proofs emphasizes modularity,
given the highly modular design of SMT solvers. Proofs are produced and stored by each solving
component, which also guarantee they follow the structure for proofs of that component, as
described below. Once the proofs need to be combined, a post-processor does so guaranteeing
that they are compatible.
      </p>
      <p>The modules in Figure 1 are used to solve an input formula  in the following manner:
the pre-processor receives  and simplifies it in a variety of ways into formulas 1, . . . , .
For each , the pre-processor stores a proof  :  →  justifying its derivation from  .
The propositional engine receives 1, . . . ,  and clausifies them into 1 ∧ · · · ∧ . A proof
 :  →  is stored for each clause . Note that several clauses may derive from each formula.
Corresponding propositional clauses 1p, . . . , p, where first-order atoms are abstracted as
Boolean variables, are sent to the SAT solver, which checks whether their conjunction is
satisfiable. The propositional engine and the theory engine work in a loop where the SAT solver
asserts literals, which witness the satisfiability of 1p, . . . , p, and the theory engine checks
their satisfiability modulo a combination of theories  . If the literals are  -unsatisfiable, a lemma
.
 : ⃗ → ⊥</p>
      <sec id="sec-2-1">
        <title>Propositional Engine Pre-processor</title>
        <p>1 ...</p>
      </sec>
      <sec id="sec-2-2">
        <title>Clausifier</title>
      </sec>
      <sec id="sec-2-3">
        <title>SAT Solver</title>
        <p>1p ... p
 : ⃗ → ⊥</p>
      </sec>
      <sec id="sec-2-4">
        <title>Post-processor</title>
        <p>:</p>
      </sec>
      <sec id="sec-2-5">
        <title>Theory Engine</title>
        <p>Theory Combination
 : 1 1
2  : 2
1
2
  : 
...</p>
      </sec>
      <sec id="sec-2-6">
        <title>Asserted Literals</title>
      </sec>
      <sec id="sec-2-7">
        <title>SMT Proof Post-processor</title>
        <p>⊥
 :  → ⊥
{⃗, ⃗} for each , with   not necessarily distinct from  +1.
not possible, then all the clauses 1, . . . ,  generated until then are jointly unsatisfiable, and
the SAT solver yields a proof  : 1 ∧ · · · ∧</p>
        <p>→ ⊥
ifrst-order clauses, as are the derivation rules that conclude
abstraction does not need to be represented in the proof.
. Note that the proof is in terms of the
⊥ from them. The propositional</p>
        <p>The post-processor of the propositional engine connects the SAT assumptions with the
clausifier proofs, building a proof  : 1 ∧ · · · ∧
 → ⊥. Since theory lemmas are  -valid, the
resulting proof only has preprocessed formulas as assumptions. The final proof is built by the
SMT solver’s post-processor combining this proof with the preprocessing proofs  : 
The resulting proof  :</p>
        <p>→ ⊥ justifies the  -unsatisfiability of the input formula.</p>
        <p>
          The arithmetic reasoning performed by the solver happens in the pre-processor, where
rewrite rules are used to simplify arithmetic terms occurring in the input, and in the theory
solvers, where the main arithmetic reasoning takes place. We will focus on the current state and
challenges related to arithmetic reasoning in the theory solvers, where we discuss separately
about linear (Section 2.1) and non-linear reasoning (Section 2.2), given the significant diferences
between producing and checking proofs for them. The arithmetic pre-processing reasoning is
comparatively simple and less prominent, and the challenges are mostly related to the handling
of numerous rewrite rules [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], although some particular pre-processing techniques, such as
→ .
aggressive ITE elimination, can be quite challenging.
        </p>
        <p>
          We also note that the majority of the arithmetic reasoning in SMT solvers takes place on
quantifier-free formulas, since solvers employ dedicated procedures for logic fragments without
quantifiers that are supplemented by instantiation techniques [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] when quantifiers are present.
Producing and checking proofs for quantifier instantiation is generally well understood and
does not pose issues.
        </p>
        <sec id="sec-2-7-1">
          <title>2.1. Linear Arithmetic Proofs</title>
          <p>
            The workhorse of linear arithmetic solving in SMT solvers is an adapted version of the simplex
algorithm [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ], which is tailored for incremental reasoning by enabling fast backtracking as
well as eficient theory propagation1. We first discuss reasoning only for reals and afterwards
the challenges involving integers.
          </p>
          <p>
            The simplex algorithm will determine the satisfiability of a conjunction of theory atoms
⋀︀ ∑︀ ,  ◁▷ ,0 for real constants , , real variables  , and relations ◁▷∈ {≤ , &lt;}. The
Farkas lemma shows that if this conjunction is unsatisfiable, then there exist Farkas coeficients
 &gt; 0 such that ∑︀ (∑︀ ,  ) = 0 and ∑︀ ,0 ◁▷ 0, where ◁▷ is ≥ when any ◁▷ are
strict or &gt; otherwise. Moreover, the simplex algorithm can be instrumented to compute these
coeficients for unsatisfiable queries, with minimal overhead. Thus, solvers can compute Farkas
coeficients during solving and provide them when proofs for the unsatisfiability of a given
conjunction of inequalities is requested, which is the case to state the validity of the theory
lemma produced by the solver, which corresponds to the negation of this conjunction of literals.
A proof checker then can use the coeficients to reduce the respective linear combination to false
and thus prove the validity of its negation, the theory lemma. In the Alethe proof format for
SMT solvers [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ], the proof rule for this justification has its semantics defined via the algorithm
to reduce the linear combination to false [15, Sec 5.4, Rule 9].
          </p>
          <p>In cvc5, we have instrumented the solver to provide real linear arithmetic proofs in a more
ifne-grained manner. This is motivated to facilitate the algorithm that must be applied during
proof checking to justify the reduction of the linear combination to false. We have instrumented
cvc5 to leverage the Farkas lemma by allowing bounds ∑︀ ,  ◁▷ ,0 to be scaled by
constants and also summed (the comparator for the sum is strict if and only any summand’s
comparator is). The Farkas coeficients give a linear combination of bounds that can be shown
to be equivalent to false via simple theory rewriting rather than a more complex algorithm, as
above, which sufices to show the unsatisfiability of the conjunction. For example,  &lt; − 1 and
−  ≤ 1 sum to  −  &lt; 1 − 1, which rewrites to false.</p>
          <p>
            Some SMT solvers, such as Z3 [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ], do not provide the coeficients needed to eficiently
check the validity of theory lemmas produced by the linear real arithmetic solver. This puts a
considerable burden in proof checkers for Z3 proofs involving this theory. For example, Schurr
et al. [
            <xref ref-type="bibr" rid="ref17">17</xref>
            ] have shown that when checking SMT proofs for linear real arithmetic, without the
coeficients, in the interactive theorem prover Isabelle/HOL (which uses the linarith tactic to
do so, via the Sledghammer tool [
            <xref ref-type="bibr" rid="ref7">7</xref>
            ]), most of the time is spent searching for the coeficients,
which can lead to proof checking failures due to incompleteness of the procedure as well as to
1Theory propagation, i.e., for a theory solver to eagerly communicate to the SAT solver that a given theory literal
is valid in the current context of asserted literals, is not shown in Figure 1. This is because theory propagation
is handled in the same manner as theory lemmas for producing proofs: when a justification for the literal being
propagated is needed, the respective theory solver produces a theory lemma for it, together with a proof.
running out of resources.
2.1.1. Challenges with Integer Reasoning
Integer reasoning in SMT solvers also generally leverages the simplex method, but requires
branching and bounding on integer variables before it can be applied with the assumption that
the integer variables are real ones. For example [15, Sec. 4.3], if  is an integer, to reason with
the inequality 2 &lt; 3 we can infer  ≤ 1. This can also be justified with Farkas reasoning,
showing the validity of the clause ¬( ≤ 1) ∨ 2 &lt; 3 with coeficients 1 and 1/2. Bound
tightening requires further proof support. It sufices to add proof rules for tightening strict and
loose bounds. From a strict bound on integer term : i.e.,  &lt; , one can deduce that  is at most
the greatest integer less than . From  ≤ , one deduces  ≤ ⌊ ⌋.
          </p>
          <p>
            Instrumenting solvers to produce the justification for the integer reasoning they provide can
still be challenging, however. For example, the veriT solver often produces no justifications
for the integer reasoning it applies, and cvc5 also fails to do so in some cases [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ]. Similarly to
the challenge described for Z3 above, it falls to proof checkers to handle these coarse-grained
proof steps. For example, in SMTCoq [
            <xref ref-type="bibr" rid="ref6">6</xref>
            ], a tool for reconstructing SMT proofs within the
interactive theorem prover Coq, arithmetic reasoning is handled via the microomega tactic2,
which provides a procedure complete for linear integer and real arithmetic but incomplete for
non-linear arithmetic. Therefore it is a full-fledged procedure that has higher complexity than
what would be needed for checking fine-grained proof steps. In Isabelle/HOL, the linarith tactic,
for automating arithmetic reasoning when search is needed, is more limited and can only find
integer coeficients and always fails if strengthening is required.
          </p>
          <p>
            In Carcara [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ], a proof checker for the Alethe format, we have mitigated these issues
by elaborating coarse-grained proof steps into fine-grained ones. We use cvc5 to produce
ifne-grained proofs, with simple steps for bound tightening and Farkas with coeficients, for
coarse-grained linear arithmetic steps. A case study is made with coarse steps produced by
the veriT solver for integer reasoning, and the overwhelming majority of these steps can be
successfully converted to fine-grained proofs via cvc5. This approach can be specially impactful
when considering the integration with interactive theorem provers of solvers that produce
coarse-grained linear arithmetic proofs, such as veriT for integer reasoning and Z3 in general.
          </p>
        </sec>
        <sec id="sec-2-7-2">
          <title>2.2. Non-Linear Arithmetic Proofs</title>
          <p>
            SMT solvers adopt diferent solutions to solve non-linear arithmetic problems. For example,
the MathSAT solver uses incremental linearization [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ], in a abstraction-refinement loop with
the linear solver, to handle non-linear arithmetic. In Z3 and Yices [
            <xref ref-type="bibr" rid="ref19">19</xref>
            ], a complete procedure
based on cylindrical algebraic decomposition (CAD) is employed. In cvc5, we use incremental
linearization and cylindrical algebraic coverings [
            <xref ref-type="bibr" rid="ref20">20</xref>
            ], a variation of CAD better suited for SMT
solving. They are combined so that the incomplete procedure can be supplemented by the
complete one [
            <xref ref-type="bibr" rid="ref21">21</xref>
            ].
2.2.1. Proofs for Incremental Linearization
To produce proofs for the incremental linearization procedure it is necessary to capture with
proof rules how lemmas are generated to refine wrong models produced by the linear solver.
For example [21, Sec. 2],  ·  &gt; 0 ∧  &gt; 1 ∧  &lt; 0 is handled by the linear solver with  · 
being abstracted as a variable. A possible model found by the linear solver has  ↦→ 2,  ↦→ − 1,
and  ·  ↦→ 1. The refinement loop then generates the lemma  &gt; 0 ∧  &lt; 0 →  ·  &lt; 0
to rule out this wrong solution. This lemma is an instance of this proof rule, which must be
instantiated in a proof:
          </p>
          <p>− | 1 . . . , 
(1 ∧ · · · ∧</p>
          <p>
            ) →  ◇ 0
where the “− | 1 . . . , ” notation means that this rule takes no premises and has 1 . . . 
and  as arguments, where the former are variables compared to zero (less, greater or not
equal), and  is a monomial from these variables, with ◇ being the comparison (less or equal)
that results from the signs of the variables. Moreover, all variables with even exponent in 
should be given as not equal to zero while all variables with odd exponent in  should be
given as less or greater than zero. Another challenge regarding incremental linearization is that
these proof rules must be reflected in the proof checkers. For example, in our work-in-progress
integration between cvc5 and the Lean interactive theorem prover [
            <xref ref-type="bibr" rid="ref22">22</xref>
            ], proving the correctness
of this rule and defining a reconstruction procedure for it requires 250 lines of Lean code, while
borrowing heavily from Lean’s mathematical library, Mathlib.
          </p>
          <p>
            Since the incremental linearization technique uses multiple lemma schemas in the refinement
loop, all of them must be instrumented to produce proofs to capture the reasoning of this
technique. While this is relatively simple for some lemmas, which can be proven via propositional
and basic arithmetic rules rather than dedicated proof rules, some, such as the one above and
the tangent plane lemma3, need involved proof rules. It is still work in progress in cvc5 to
produce proofs for all the lemma schemas used in the incremental linearization procedure, let
alone to reflect them in proof checkers.
2.2.2. Proofs for Cylindrical Algebraic Coverings
Proofs for the infeasible subsets generated by cylindrical algebraic coverings are much more
complex, even though they are more accessible than for regular CAD-based theory solvers [
            <xref ref-type="bibr" rid="ref23">23</xref>
            ].
To prove a conflict in regular CAD it is necessary to show that each considered candidate
solution fails, and that the list of candidate solutions is indeed exhaustive to cover the whole
real space. This argument is all but trivial to check. Proofs for cylindrical algebraic coverings on
the other hand can be built in a constructive manner via rules that successively exclude parts of
the search space, as well as compose these parts, providing a stratified argument as a tree-like
proof.
          </p>
          <p>In cvc5 we have an initial proof calculus based on the above idea. The calculus consists
of two rules for excluding an interval in some dimension: one based on an assertion and a
3See the ARITH_MULT_TANGENT rule in https://cvc5.github.io/docs/latest/proofs/proof_rules.html
partial assignment, and the other one based on a full covering of the next dimension. They
are combined and essentially follow the computation of the solver (pruned from unneeded
branches). Constructing the actual proof rule applications is complicated by the fact that the
premise of a subtree, i.e., the description of the interval that is excluded, is only known when the
subtree is closed. We thus generate proofs lazily to manage the construction of a tree-shaped
proof and the issue of lazy premises.</p>
          <p>
            The cylindrical algebraic covering proofs are still coarse-grained proofs, with their proof
checking not being inherently simpler than solving. Therefore, currently only marginal gains
can be expected from the cvc5 proofs versus not providing any details at all. In particular, the
second proof rule that lifts a covering to an interval in a lower dimension rests on a significant
portion of CAD-related theory. The proper formalization of CAD theory and its foundational
algorithms in interactive theorem provers is a significant challenge in this respect and subject
of past and future research [
            <xref ref-type="bibr" rid="ref24 ref25">24, 25</xref>
            ].
          </p>
          <p>
            As in the case of linear arithmetic proofs where solvers give no details, for non-linear
arithmetic one can also rely on powerful tactics in interactive theorem provers to attempt to
check these steps, until more fine-grained steps are not produced by the solvers. Recent work
by Kosaian et al. [
            <xref ref-type="bibr" rid="ref9">9</xref>
            ] has formalized in Isabelle/HOL a complete procedure for non-linear real
arithmetic4 that could help such an integration.
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Summary</title>
      <p>Much work has been done for instrumenting SMT solvers to produce proofs for arithmetic
reasoning as well as to to check these proofs in ad-hoc tools, verified checkers or in interactive
theorem provers. However, there are still multiple challenges to be addressed, as shown in the
previous sections, specially as SMT solvers are extended to employ more advanced reasoning
techniques from the computer algebra community. Combining eforts from the satisfiability
checking and the symbolic computation communities will be fundamental to better address
these challenges and allow for more trustworthy SMT solvers.
4It is the first complete multivariate quantifier elimination algorithm formalized in Isabelle/HOL, whereas univariate
or incomplete multivariate ones, which are considerably simpler, already existed.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <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>A.</given-names>
            <surname>Irfan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Roveri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          ,
          <article-title>Satisfiability Modulo Transcendental Functions via Incremental Linearization</article-title>
          , in: L. de Moura (Ed.),
          <source>Proc. Conference on Automated Deduction (CADE)</source>
          , volume
          <volume>10395</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2017</year>
          , pp.
          <fpage>95</fpage>
          -
          <lpage>113</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -63046-5.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. C.</given-names>
            <surname>Blanchette</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fleury</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fontaine</surname>
          </string-name>
          ,
          <article-title>Scalable Fine-Grained Proofs for Formula Processing</article-title>
          ,
          <source>Journal of Automated Reasoning</source>
          <volume>64</volume>
          (
          <year>2020</year>
          )
          <fpage>485</fpage>
          -
          <lpage>510</lpage>
          . doi:
          <volume>10</volume>
          .1007/ s10817-018-09502-y.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , G. Kremer,
          <string-name>
            <given-names>H.</given-names>
            <surname>Lachnitt</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>Viswanathan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Viteri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zohar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <article-title>Flexible Proof Production in an Industrial-Strength SMT Solver</article-title>
          , in: J.
          <string-name>
            <surname>Blanchette</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Kovács</surname>
          </string-name>
          , D. Pattinson (Eds.),
          <source>International Joint Conference on Automated Reasoning (IJCAR)</source>
          , volume
          <volume>13385</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2022</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>35</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>031</fpage>
          -10769-
          <issue>6</issue>
          _
          <fpage>3</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <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>
            <given-names>Y.</given-names>
            <surname>Zohar</surname>
          </string-name>
          , cvc5:
          <string-name>
            <given-names>A</given-names>
            <surname>Versatile</surname>
          </string-name>
          and
          <article-title>Industrial-Strength SMT Solver</article-title>
          , in: D.
          <string-name>
            <surname>Fisman</surname>
          </string-name>
          , G. Rosu (Eds.), TACAS,
          <string-name>
            <surname>Part</surname>
            <given-names>I</given-names>
          </string-name>
          , volume
          <volume>13243</volume>
          of Lecture Notes in Computer Science, 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="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Hoenicke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Schindler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Simple</given-names>
            <surname>Proof</surname>
          </string-name>
          <article-title>Format for SMT</article-title>
          , in: D.
          <string-name>
            <surname>Déharbe</surname>
            ,
            <given-names>A. E. J.</given-names>
          </string-name>
          <string-name>
            <surname>Hyvärinen</surname>
          </string-name>
          (Eds.),
          <source>International Workshop on Satisfiability Modulo Theories (SMT)</source>
          , volume
          <volume>3185</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2022</year>
          , pp.
          <fpage>54</fpage>
          -
          <lpage>70</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3185</volume>
          /paper9527.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>B.</given-names>
            <surname>Ekici</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mebsout</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          , C. Keller, G. Katz,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <article-title>SMTCoq: A Plug-In for Integrating SMT Solvers into Coq</article-title>
          , in: R.
          <string-name>
            <surname>Majumdar</surname>
          </string-name>
          , V. Kuncak (Eds.),
          <source>Computer Aided Verification (CAV)</source>
          , volume
          <volume>10427</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2017</year>
          , pp.
          <fpage>126</fpage>
          -
          <lpage>133</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -63390-
          <issue>9</issue>
          _
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J. C.</given-names>
            <surname>Blanchette</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Böhme</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. C.</given-names>
            <surname>Paulson</surname>
          </string-name>
          ,
          <article-title>Extending Sledgehammer with SMT Solvers</article-title>
          ,
          <source>Journal of Automated Reasoning</source>
          <volume>51</volume>
          (
          <year>2013</year>
          )
          <fpage>109</fpage>
          -
          <lpage>128</lpage>
          . doi:
          <volume>10</volume>
          .1007/s10817-013-9278-5.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. W.</given-names>
            <surname>Lin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Rümmer</surname>
          </string-name>
          , M. Schrader,
          <article-title>CertiStr: a certified string solver</article-title>
          , in: A.
          <string-name>
            <surname>Popescu</surname>
          </string-name>
          , S. Zdancewic (Eds.),
          <source>Certified Programs and Proofs (CPP)</source>
          , ACM,
          <year>2022</year>
          , pp.
          <fpage>210</fpage>
          -
          <lpage>224</lpage>
          . doi:
          <volume>10</volume>
          . 1145/3497775.3503691.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>K.</given-names>
            <surname>Kosaian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. K.</given-names>
            <surname>Tan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Platzer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A First</given-names>
            <surname>Complete</surname>
          </string-name>
          <article-title>Algorithm for Real Quantifier Elimination in Isabelle/HOL</article-title>
          , in: R.
          <string-name>
            <surname>Krebbers</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Traytel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Pientka</surname>
          </string-name>
          , S. Zdancewic (Eds.),
          <source>Certified Programs and Proofs (CPP)</source>
          , ACM,
          <year>2023</year>
          , pp.
          <fpage>211</fpage>
          -
          <lpage>224</lpage>
          . doi:
          <volume>10</volume>
          .1145/3573105.3575672.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nieuwenhuis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Oliveras</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <string-name>
            <surname>Solving</surname>
            <given-names>SAT</given-names>
          </string-name>
          and
          <article-title>SAT Modulo Theories: From an Abstract Davis-Putnam-Logemann-Loveland Procedure to DPLL(T)</article-title>
          ,
          <source>J. ACM</source>
          <volume>53</volume>
          (
          <year>2006</year>
          )
          <fpage>937</fpage>
          -
          <lpage>977</lpage>
          . doi:
          <volume>10</volume>
          .1145/1217856.1217859.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Nötzli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Niemetz</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>C. W.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <article-title>Reconstructing Fine-Grained Proofs of Rewrites Using a Domain-Specific Language</article-title>
          , in: A.
          <string-name>
            <surname>Griggio</surname>
          </string-name>
          , N. Rungta (Eds.), Formal Methods In Computer-Aided
          <string-name>
            <surname>Design</surname>
          </string-name>
          (FMCAD), IEEE,
          <year>2022</year>
          , pp.
          <fpage>65</fpage>
          -
          <lpage>74</lpage>
          . doi:
          <volume>10</volume>
          .34727/2022/isbn.978-3-
          <fpage>85448</fpage>
          -053-2_
          <fpage>12</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <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>
          , Revisiting Enumerative Instantiation, in: D.
          <string-name>
            <surname>Beyer</surname>
          </string-name>
          , M. Huisman (Eds.), TACAS,
          <string-name>
            <surname>Part</surname>
            <given-names>II</given-names>
          </string-name>
          , volume
          <volume>10806</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2018</year>
          , pp.
          <fpage>112</fpage>
          -
          <lpage>131</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -89963-
          <issue>3</issue>
          _
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>B.</given-names>
            <surname>Dutertre</surname>
          </string-name>
          , L. de Moura,
          <article-title>A Fast Linear-Arithmetic Solver for DPLL(T)</article-title>
          , in: T. Ball, R. B.
          <string-name>
            <surname>Jones</surname>
          </string-name>
          (Eds.),
          <source>Computer Aided Verification (CAV)</source>
          , volume
          <volume>4144</volume>
          of Lecture Notes in Computer Science, Springer Berlin Heidelberg,
          <year>2006</year>
          , pp.
          <fpage>81</fpage>
          -
          <lpage>94</lpage>
          . doi:
          <volume>10</volume>
          .1007/11817963_
          <fpage>11</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>H.</given-names>
            <surname>Schurr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fleury</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>
          , Alethe:
          <article-title>Towards a Generic SMT Proof Format (extended abstract)</article-title>
          ,
          <source>CoRR abs/2107</source>
          .02354 (
          <year>2021</year>
          ). URL: https://arxiv.org/abs/2107.02354. arXiv:
          <volume>2107</volume>
          .02354, in Workshop on Proof eXchange for Theorem Proving (PxTP).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <article-title>The Alethe Proof Format: A Speculative Specification</article-title>
          and Reference, https://verit.loria.fr/ documentation/alethe-spec.pdf,
          <year>Oct 2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>L. M. de Moura</surname>
          </string-name>
          , N. Bjørner,
          <article-title>Z3: An Eficient SMT Solver</article-title>
          , in: C. R. Ramakrishnan, J. Rehof (Eds.), TACAS, volume
          <volume>4963</volume>
          of Lecture Notes in Computer Science, Springer,
          <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="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>H.</given-names>
            <surname>Schurr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fleury</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Desharnais</surname>
          </string-name>
          ,
          <article-title>Reliable Reconstruction of Fine-grained Proofs in a Proof Assistant</article-title>
          , in: A.
          <string-name>
            <surname>Platzer</surname>
          </string-name>
          , G. Sutclife (Eds.),
          <source>Proc. Conference on Automated Deduction (CADE)</source>
          , volume
          <volume>12699</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2021</year>
          , pp.
          <fpage>450</fpage>
          -
          <lpage>467</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -79876-5_
          <fpage>26</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>B.</given-names>
            <surname>Andreotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Lachnitt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <article-title>Carcara: An Eficient Proof Checker and Elaborator for SMT Proofs in the Alethe Format</article-title>
          , in: S. Sankaranarayanan, N. Sharygina (Eds.), TACAS,
          <string-name>
            <surname>Part</surname>
            <given-names>I</given-names>
          </string-name>
          , volume
          <volume>13993</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2023</year>
          , pp.
          <fpage>367</fpage>
          -
          <lpage>386</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>031</fpage>
          -30823-9_
          <fpage>19</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>D.</given-names>
            <surname>Jovanović</surname>
          </string-name>
          , L. de Moura,
          <article-title>Solving Non-linear Arithmetic</article-title>
          , in: B.
          <string-name>
            <surname>Gramlich</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Miller</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          Sattler (Eds.),
          <source>International Joint Conference on Automated Reasoning (IJCAR)</source>
          , volume
          <volume>7364</volume>
          of Lecture Notes in Computer Science, Springer Berlin Heidelberg,
          <year>2012</year>
          , pp.
          <fpage>339</fpage>
          -
          <lpage>354</lpage>
          . URL: http: //dx.doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -31365-3_
          <fpage>27</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -31365-3_
          <fpage>27</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>E.</given-names>
            <surname>Ábrahám</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Davenport</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>England</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Kremer, Deciding the consistency of nonlinear real arithmetic constraints with a conflict driven search using cylindrical algebraic coverings</article-title>
          ,
          <source>J. Log. Algebraic Methods Program</source>
          .
          <volume>119</volume>
          (
          <year>2021</year>
          )
          <article-title>100633</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.jlamp.
          <year>2020</year>
          .
          <volume>100633</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kremer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <article-title>Cooperating Techniques for Solving Nonlinear Real Arithmetic in the cvc5 SMT Solver (System Description)</article-title>
          , in: J.
          <string-name>
            <surname>Blanchette</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Kovács</surname>
          </string-name>
          , D. Pattinson (Eds.),
          <source>International Joint Conference on Automated Reasoning (IJCAR)</source>
          , volume
          <volume>13385</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2022</year>
          , pp.
          <fpage>95</fpage>
          -
          <lpage>105</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>031</fpage>
          -10769-
          <issue>6</issue>
          _
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>L. de Moura</surname>
          </string-name>
          , S. Ullrich,
          <article-title>The Lean 4 Theorem Prover and Programming Language</article-title>
          , in: A.
          <string-name>
            <surname>Platzer</surname>
          </string-name>
          , G. Sutclife (Eds.),
          <source>Proc. Conference on Automated Deduction (CADE)</source>
          , volume
          <volume>12699</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2021</year>
          , pp.
          <fpage>625</fpage>
          -
          <lpage>635</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>030</fpage>
          -79876-5_
          <fpage>37</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>E.</given-names>
            <surname>Ábrahám</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Davenport</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>England</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Kremer, Proving UNSAT in SMT: the case of quantifier free non-linear real arithmetic</article-title>
          , in: M.
          <string-name>
            <surname>Suda</surname>
          </string-name>
          , S. Winkler (Eds.),
          <source>Proceedings of ARCADE</source>
          <year>2021</year>
          ,
          <year>2021</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          . URL: https://arxiv.org/abs/2108.05320.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Mahboubi</surname>
          </string-name>
          ,
          <article-title>Implementing the cylindrical algebraic decomposition within the Coq system</article-title>
          ,
          <source>Mathematical Structures in Computer Science</source>
          <volume>17</volume>
          (
          <year>2007</year>
          )
          <fpage>99</fpage>
          -
          <lpage>127</lpage>
          . doi:
          <volume>10</volume>
          .1017/ S096012950600586X.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>S. J. C.</given-names>
            <surname>Joosten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Thiemann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Yamada</surname>
          </string-name>
          ,
          <source>A Verified Implementation of Algebraic Numbers in Isabelle/HOL, Journal of Automated Reasoning</source>
          <volume>64</volume>
          (
          <year>2020</year>
          )
          <fpage>363</fpage>
          -
          <lpage>389</lpage>
          . doi:
          <volume>10</volume>
          .1007/ s10817-018-09504-w.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>