<!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>International Workshop on Satisfiability Checking and Symbolic Computation, August</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Cylindrical Algebraic Coverings for Quantifiers⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gereon Kremer</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jasper Nalbach</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>RWTH Aachen University</institution>
          ,
          <addr-line>Aachen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Stanford University</institution>
          ,
          <addr-line>Stanford</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2022</year>
      </pub-date>
      <volume>12</volume>
      <issue>2022</issue>
      <fpage>0000</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>The cylindrical algebraic coverings method was originally proposed to decide the satisfiability of a set of nonlinear real arithmetic constraints. We reformulate and extend the cylindrical algebraic coverings method to allow for checking the validity of arbitrary nonlinear arithmetic formulas, adding support for both quantifiers and arbitrary Boolean structure. Furthermore, we also propose a variant to perform quantifier elimination on such formulas. Nonlinear real arithmetic is the first-order theory whose atoms are polynomial constraints over real variables. We consider three fundamental problems that deal with formulas from this theory: satisifability , validity and quantifier elimination . Satisfiability is concerned with the existential fragment (or equivalently the quantifier-free fragment) of this theory: given a purely existentially quantified formula (or a quantifier-free formula) it decides whether an assignment to the formula's variables exists such that the formula evaluates to True. In contrast to this, validity considers fully quantified formulas and checks whether they are equivalent to True or False. Finally, quantifier elimination deals with formulas that have both free variables (parameters) and quantified variables, and constructs equivalent quantifier-free formulas over the parameters. The cylindrical algebraic decomposition [1] method is the only complete procedure for solving all these questions for nonlinear real arithmetic that is used in practice, despite its doubly exponential worst-case complexity that severely limits the scalability of the method. For the satisfiability problem of conjunctions of constraints, motivated by the application in satisfiability modulo theories solving, the cylindrical algebraic coverings method [2] has been developed based on cylindrical algebraic decomposition. Although it retains the doubly exponential complexity, its performance is significantly better in practice [2, 3] while its implementation requires only a simple bookkeeping data structure. Furthermore, it closer resembles human reasoning and is more accessible to proof production [4, 5]. Contribution. We propose a novel reformulation and extension of the cylindrical algebraic coverings method that goes beyond the satisfiability problem of conjunctions and also allows to solve arbitrary quantified formulas as well as quantifier elimination queries. We first consider validity where all variables are explicitly quantified, either existentially or universally, in Section 3, and then expand to the quantifier elimination problem in Section 4.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Nonlinear Arithmetic</kwd>
        <kwd>Cylindrical Algebraic Coverings</kwd>
        <kwd>Quantifier Elimination</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 every formula  to be a first-order formula over nonlinear real arithmetic with polynomial
constraints defined in variables 1, . . . ,  ∈ R. Furthermore, we expect  to be transformed to prenex
normal form, i.e., consisting of a prefix of quantifiers and a quantifier-free formula called the matrix  :
 := +1+1 · · · .  (1, . . . , )
If  ̸= 0,  has free variables that are not explicitly quantified. These can be considered to be implicitly
quantified existentially, much like we do for satisfiability modulo theories queries in general. We assume
that in Section 3 and actually solve ∃1 · · · ∃ +1+1 · · · .  (1 . . . ). Alternatively, these
free variables can be understood as parameters to make the input a quantifier elimination problem, as
we do in Section 4.</p>
      <p>
        We use standard notation for arithmetic and assume an ordering on the variables 1 ≺ · · · ≺ .
The highest variable occurring in a polynomial or constraint is called their main variable. For further
details, we refer to [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Given a (partial) sample point  ∈ R we denote the extension of  to
(1, . . . +1) ∈ R+1 by  × +1 and the (partial) evaluation up to level  of  or  over  by  [] or
 [], respectively: constraints with main variable at most  evaluate to True or False according to
standard semantics, otherwise they evaluate to Undef (i.e., under this partial evaluation 1 · 2 &gt; 1
evaluates to Undef at 1 = 0); the semantics are extended for formulas accordingly.
      </p>
      <p>We denote the constraints that occur in a formula  by constraints( ). To select only those with
main variable , we write constraints( ).</p>
      <p>
        Cylindrical Algebraic Coverings. We briefly present the idea behind the cylindrical algebraic
coverings method for checking the existential fragment of nonlinear real arithmetic and refer to [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
for more details. The fundamental idea is to recursively construct a (partial) sample point and collect
intervals that represent unsatisfiable regions above this sample point. When a sample point can not be
extended because these intervals form a covering of the real line in the next dimension, the covering is
projected into the previous dimension to refute the current sample point. We then backtrack and choose
a diferent value for the sample point in the highest dimension. Eventually, either a full sample point is
constructed and we return SAT, or an unsatisfiable covering is constructed in the first dimension and
we return UNSAT. In contrast to cells from cylindrical algebraic decomposition, intervals do not form a
decomposition as they may overlap.
      </p>
      <p>
        The algorithm starts by constructing unsatisfiable intervals for 1 based on univariate constraints
and then tries so select a value 1 for the variable 1 outside of these intervals. If such a value exists,
the method is called recursively with the partial sample point (1). After substituting 1 = 1, the
constraints with main variable 2 become univariate and thus suitable for identifying unsatisfiable
intervals for 2. This process is continued recursively until either all constraints are satisfied (and
we return SAT) or for some  no suitable value exists. In the latter case, the set of unsatisfiable
intervals covers the whole real line and forms a covering. This covering is generalized by projecting it to
dimension  − 1. The idea is to use projection tools borrowed from cylindrical algebraic decomposition
with some improvements: as we only need to characterize this covering and not a decomposition, only a
subset of the full projection is needed. Using the current sample point, an interval for the variable − 1
with respect to the projection result can be computed which is added to the set of unsatisfiable intervals
for − 1, possibly taking part in an unsatisfiable covering for − 1. Unless we find a full satisfying
sample point we eventually obtain an unsatisfiable covering for the first variable 1 and return UNSAT.
Algebraic Intervals. We generalize intervals (over a partial sample point) by attaching algebraic
information in the form of sets of polynomials whose order-invariance characterizes satisfiability-invariant
regions of a formula in multidimensional space. We call them algebraic intervals and represent them as a
tuple  = (ℓ, , ,  ,  , ⊥). (ℓ, ) is the (numeric) interval over an ( − 1)-dimensional sample
point,  and  are sets of the polynomials with main variable  which vanish at (1, . . . , − 1, ℓ)
and (1, . . . , − 1, ), respectively,  is a set of polynomials with main variable  which should be
order-invariant in the constructed interval and ⊥ is a set of lower-level polynomials which need to be
order-invariant in the underlying cell as well. See [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] for more details.
      </p>
      <p>Example 1. Consider the polynomials  = {2 + 1, 2 − 1, 11 + 22 − 2, 1 − 1} and the sample point
 = (0, 0). Then the algebraic interval (− 1, 1, {2 + 1}, {2 − 1}, {2 + 1, 2 − 1, 11 + 22 − 2}, {1 − 1})
represents the interval (− 1, 1) for 2 around 2 = 0 over the partial sample point 1 = 0. The lower and
upper bounds are defined by 2 + 1 and 2 − 1, respectively. The polynomials in  are order-invariant
in the represented interval, the polynomials of  defining zeros of 2 are {2 + 1, 2 − 1, 11 + 22 − 2},
while 1 − 1 is of lower level and thus stored separately.</p>
      <p>Implicants. An implicant  of a formula  is usually understood to be a “simpler” formula that
implies  , or formally  ⇒  ∧ constraints( ) ⊆ constraints( ). We adapt this concept as
follows. Let  ∈ R be a (partial) sample point. If  [] = True, then  is an implicant of  with respect
to  if
 [] = True ∧ (</p>
      <p>⇒  ) ∧ constraints( ) ⊆ constraints( ).</p>
      <p>Otherwise, if  [] = False, then  is an implicant of  with respect to  if
 [] = True ∧ (</p>
      <p>⇒ ¬ ) ∧ constraints( ) ⊆ constraints( ).</p>
      <p>We call  a prime implicant of  if constraints( ) is minimal among all implicants of  .
Example 2. Let  = 2 &gt; 0 ∧ ( &lt; 2 ∨  &gt; 4). Note that  (1) = True,  (3) = False and
 (0) = False. 2 &gt; 0 ∧  &lt; 2 is a prime implicant of  w.r.t. 1. ¬( &lt; 2 ∨  &gt; 4) is a prime implicant
of  w.r.t. 3. Both ¬(2 &gt; 0) and ¬(2 &gt; 0 ∧  &gt; 4) are implicants of  w.r.t. 0, but only the first is a
prime implicant.</p>
      <p>Algorithm 1: user_call()</p>
      <p>Data: Global prefix 11 · · ·  and matrix  .</p>
      <p>Output : Either SAT or UNSAT
1 (, ) := recurse(())
2 return 
// Algorithm 2
Algorithm 2: recurse()</p>
      <p>Data: Global prefix 11 · · ·  and matrix  .</p>
      <p>Input : Sample point  = (1, . . . , − 1) ∈ R− 1 such that  [] ̸= False.</p>
      <p>Output : (SAT, ) or (UNSAT, ) where  ×  can or can not be extended to a model for any  ∈ . In both cases, the
algebraic information attached to  describes how  can be generalized.
1 if  = ∃ then return exists() // Algorithm 3
2 else return forall() // Algorithm 4</p>
    </sec>
    <sec id="sec-3">
      <title>3. Quantified Problems</title>
      <p>
        We first describe how the cylindrical algebraic coverings method can be adapted for problems where all
variables are quantified. Our presentation stays very close to [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and we reuse utility methods when
possible.
      </p>
      <p>
        One of the most notable changes is the interface of the main method. In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], get_unsat_cover
always returns a witness, either for satisfiability (a model) or for unsatisfiability (an unsatisfiable covering ,
possibly over a partial sample point). In our counterparts Algorithms 3 and 4, we instead always return
a satisfiability-invariant interval in the dimension of the caller, which provides for a common interface
for both existentially and universally quantified variables. In particular, we move the computation of
the characterization from the caller to the callee.
      </p>
      <p>This introduces a technical problem for the first dimension (  = 1), as we refer to − 1 in the
arguments to interval_from_characterization which does not exist. This is to be expected, as
the returned interval would live in the “zero-th dimension”. To simplify the presentation, we assume
that a special placeholder value is returned instead of an actual interval. Algorithm 2 only returns SAT
or UNSAT and no longer exposes a model or an unsatisfiable covering. In an actual implementation, this
information is easily accessible.</p>
      <p>Algorithm 1 is the interface to the recursive Algorithm 2, calling it with an empty sample point and
extracting the main return value. Algorithm 2 checks the current quantifier and calls out to Algorithm 3
or Algorithm 4 accordingly.</p>
      <p>Algorithm 3 is mostly equivalent to [2, Algorithm 2] and incorporates the following changes: instead
of returning a model, we obtain a feasible interval around the model and return the algebraic interval
that can directly be used for a satisfiable covering in dimension  − 1; instead of computing an algebraic
interval from the covering obtained from the (UNSAT) recursive call, we use the result as it is and return
the appropriate algebraic interval instead of a covering.</p>
      <p>Algorithm 4 is analogous to Algorithm 3 that is used if the current variable is universally quantified.
The two procedures are almost identical: while Algorithm 3 collects unsatisfiable intervals and returns
early when it finds a satisfiable interval, Algorithm 4 collects satisfiable intervals and returns early
when it finds an unsatisfiable interval. Note that we call out to characterize_covering for both
satisfiable and unsatisfiable coverings in the very same way.</p>
      <p>
        Algorithm 5 computes an interval around the given sample point that is satisfiability-invariant with
respect to  . It first obtains the set of relevant polynomials by calling implicant_polynomials
and then uses [2, Algorithm 5] to construct the interval that is being returned. The helper function
implicant_polynomials is expected to return the polynomials of an implicant of  with respect
to  × . This might include polynomials with main variable  or lower, efectively providing for a
proper characterization of the interval not only in variable , but also for lower variables. Further, if
 [ × ] = False and  is a simple conjunction, it is easy to obtain a prime implicant as the negation
of a single conflicting constraint in constraints( ). Calling it in a loop as done in Algorithm 3 is
thus a direct generalization of get_unsat_intervals from [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. If  [ × ] = True and  is a simple
conjunction and non-redundant (i.e. no sub-formula of  implies  ), then  itself is the only prime
implicant.
      </p>
      <p>Algorithm 6 and Algorithm 7 replace [2, Algorithm 4] and compute the characterizations for a single
interval and a covering, respectively. They contain no changes, except generalizing their input and
output descriptions to any coverings, either satisfiable or unsatisfiable.</p>
      <sec id="sec-3-1">
        <title>3.1. Notes on CAD projection</title>
        <p>
          Note that we changed how we normalize the polynomial sets after projection. While [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] assumes
“standard CAD simplifications”, we explicitly use the set of its irreducible factors in Algorithm 5,
Algorithm 6, and Algorithm 7 to satisfy the requirements of the projection operator that is used in
Algorithm 6. Simply using an irreducible square-free basis, the common standard formulation for CAD
projection, is not quite suficient for cylindrical algebraic coverings: we eventually compute resultants
of polynomials that come from diferent local projection sets, i.e. from diferent basis’. If carefully
executed, these sets can be made “pairwise square-free”, as mentioned in [6, Section 2.1]. Fully factoring
all polynomials is more robust and probably even more eficient in practice, if the implementation at
hand has this capability.
        </p>
        <p>Depending on the implementation of the required_coefficients() subroutine and which
semantics for the root isolation is used, the projection operator would usually be either McCallum’s or
Lazard’s projection operator; this choice is already discussed in [2, Section 4.4.6] and possibly changes
the properties of the algebraic intervals which we define based on order-invariance.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Example</title>
        <p>
          As wide parts of the algorithm are taken from the cylindrical algebraic covering method, we again refer
to [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] for more intuition of unsatisfiable coverings. In this example, we illustrate how both satisfiable
and unsatisfiable regions are characterized for an existentially quantified variable and how coverings
of satisfying regions are computed for a universally quantified variable. We consider the following
formula with constraints 1, 2 and 3 that are depicted in Figure 1a:
 := ∀1. ∃2. 1 : 2 &gt; 3.5− 2(1− 4)2∧2 : (1− 2)2+(2− 2)2− 1 &gt; 0∧3 : 2 &lt; 3+0.25(1− 4)2
4
3
2
1

2
We start with the first variable being universally quantified:
forall( = ()) We start covering the real line with satisfiable intervals by sampling values for 1
(Lines 1 and 2). We then sample any value outside the excluded intervals (in this case, we can pick
any value); for illustrational purposes (as for all samples in this example), we chose 2 (Line 3).
As  does not evaluate to a value yet, we call the algorithm with the current partial sample to
handle the next variable (Line 9).
exists( = (2)) We start covering the real line with unsatisfiable intervals (Lines 1 and 2).
        </p>
        <p>We sample 2 = 3.5 (Line 3) and find a satisfying sample. Now, we generalize to the feasible
interval around (2, 3.5) as depicted in Figure 1b, which is bounded from below by 1 and
from above by 3 (Line 7). Its projection is the satisfiable interval (1, 3) for 1 that we return
(Lines 11 and 12).</p>
        <p>We store the received satisfying interval (Line 11). As there exist samples outside the set of
satisfying intervals (Line 2), we pick the next value 3.2 for 1 (Line 3):
exists( = (3.2)) We sample 2 = 2.75 and find a satisfying sample. We generalize to the
feasible interval bounded by 1 and 3. Note that in the projection of the feasible interval,
we take all constraints into account (as all constraints are part of the implicant), even if they
do not have a real root at  = 3.2 – here, the discriminant of 2 is added to the projection
ensuring that no root of 2 crosses the feasible interval. The resulting projection is the
satisfiable interval (3, 3.5) for . (The underlined value is an approximation).</p>
        <p>Similarly, the reveived interval is stored and we proceed with the sample 4 for 1:
exists( = (4)) We sample 2 = 4 (Line 3) to obtain the unsatisfiable interval (3, ∞) (Line 5)
which we store in the set of unsatisfying intervals (Line 15). As this set does not cover the
whole real line yet (Line 2), we sample 2 = 2 (Line 3) to obtain the unsatisfiable interval
(−∞ , 3.5) (Line 5), which is again stored (Line 15). The intervals cover the real line for 2
(Line 2), as depicted dashed in Figure 1b. We return the unsatisfiable interval (3.5, 4.5) for
1 which is the projection of the generalization of the covering (Lines 16 and 17).</p>
        <p>Algorithm 8: user_call_qe()</p>
        <p>Data: Global prefix +1+1 · · ·  and matrix  .</p>
        <p>Output : A disjunction of satisfiable regions of +1+1 · · · . .
1 if  = 0 then return recurse(())
2 else return parameter(())</p>
        <p>As a recursive call returned an unsatisfiable interval, the algorithm terminates here by returning
UNSAT (Line 15).</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Quantifier Elimination</title>
      <p>
        For extending the method for quantifier elimination, we could follow a NuCAD [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] like approach: we
could “guess” a sample point for all parameters at once, check the satisfiability of the formula using the
method above and construct a cell around the sample point. We would iterate this by guessing sample
points outside the already constructed cells until no such sample points exist. Finally, we would obtain
a list of cells which are either satisfying or unsatisfying.
      </p>
      <p>We propose an alternative approach in Algorithms 8 and 9 which builds upon the cylindrical algebraic
coverings method. The idea is to consider the parameters first, and treating them similar to existentially
quantified variables with a few diferences: instead of returning as soon as we find a satisfiable interval,
we collect both satisfiable and unsatisfiable intervals until the whole real line is covered by either
satisfiable or unsatisfiable intervals and return a characterization of this covering. This ensures that all
satisfiable regions of the parameter space are enumerated. Simultaneously, a symbolic description of
the satisfiable regions in the parameters is constructed as a formula and returned.</p>
      <p>
        For the latter, we employ the concept of indexed root expressions [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]: an indexed root expression
is a function root[, ] : R → R ∪ {undefined} where  ∈ R[1, . . . , +1] and  ∈ N&gt;0; for
all  ∈ R, root[, ]() is the -th real root of the univariate polynomial (, +1) ∈ R[+1]
// Algorithm 5
(or undefined if this root does not exist). We use constraints over indexed root expressions to
describe intervals symbolically: for an algebraic interval  in main variable , we define the formula
indexed_root_formula() = ⋀︀∈ root[, ,ℓ] &lt;  ∧  &lt; ⋀︀∈ root[, ,] where ,ℓ and
, are chosen such that root[, ,ℓ](1, . . . , − 1) = ℓ and root[, ,](1, . . . , − 1) = ,
respectively. While indexed root expressions are an extension to regular nonlinear real arithmetic, equivalent
“pure” nonlinear real arithmetic formulas can be constructed with reasonable efort [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>
        We have proposed an extension of the cylindrical algebraic coverings approach that is suitable to solve
the validity problem for quantified formulas as well as quantifier elimination queries for partially
quantified formulas. This significantly extends the applicability of the cylindrical algebraic coverings
method to problems that were reserved to regular cylindrical algebraic decomposition so far. At the
same time it is backwards compatible in the sense that it can produce the same results as the original
method from [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], given that appropriate heuristics are used.
      </p>
      <p>We look forward to see how implementations of this approach fare in practice compared to the
techniques for these problems that are in use today. Given the pleasant practical experience with
cylindrical algebraic coverings in solving regular satisfiability modulo theories queries – one of the
reasons cvc5 won on the QF_NRA logic in the SMT-COMP 2021 over alternative approaches – we are
optimistic it can bring significant improvements, all while still allowing for a fairly easy implementation.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>G. E.</given-names>
            <surname>Collins</surname>
          </string-name>
          ,
          <article-title>Quantifier elimination for real closed fields by cylindrical algebraic decomposition</article-title>
          ,
          <source>in: Automata Theory and Formal Languages</source>
          , volume
          <volume>33</volume>
          <source>of LNCS</source>
          , Springer,
          <year>1975</year>
          , pp.
          <fpage>134</fpage>
          -
          <lpage>183</lpage>
          . doi:
          <volume>10</volume>
          .1007/3-540-07407-4_
          <fpage>17</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <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 non-linear real arithmetic constraints with a conflict driven search using cylindrical algebraic coverings</article-title>
          ,
          <source>Journal of Logical and Algebraic Methods in Programming</source>
          <volume>119</volume>
          (
          <year>2021</year>
          ). doi:
          <volume>10</volume>
          .1016/j.jlamp.
          <year>2020</year>
          .
          <volume>100633</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kremer</surname>
          </string-name>
          , E. Ábrahám,
          <string-name>
            <given-names>M.</given-names>
            <surname>England</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Davenport</surname>
          </string-name>
          ,
          <article-title>On the implementation of cylindrical algebraic coverings for satisfiability modulo theories solving</article-title>
          ,
          <source>in: Symbolic and Numeric Algorithms for Scientific Computing</source>
          ,
          <year>2021</year>
          . doi:
          <volume>10</volume>
          .1109/SYNASC54541.
          <year>2021</year>
          .
          <volume>00018</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E.</given-names>
            <surname>Abrahá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>
          , G. Kremer,
          <article-title>Proving unsat in SMT: The case of quantifier free non-linear real arithmetic</article-title>
          ,
          <source>arXiv preprint arXiv:2108.05320</source>
          (
          <year>2021</year>
          ). doi:
          <volume>10</volume>
          .48550/arXiv. 2108.05320.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <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>
            <given-names>G.</given-names>
            <surname>Kremer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Tonks</surname>
          </string-name>
          ,
          <article-title>New opportunities for the formal proof of computational real geometry?</article-title>
          ,
          <source>in: Practical Aspects of Automated Reasoning and Satisfiability Checking and Symbolic Computation Workshop</source>
          , volume
          <volume>2752</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>178</fpage>
          -
          <lpage>188</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2752</volume>
          /paper13.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <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.</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>
          ,
          <source>in: Automated Reasoning</source>
          , volume
          <volume>13385</volume>
          <source>of LNAI</source>
          , 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="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Brown</surname>
          </string-name>
          ,
          <article-title>Open non-uniform cylindrical algebraic decompositions</article-title>
          ,
          <source>in: International Symposium on Symbolic and Algebraic Computation</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>85</fpage>
          -
          <lpage>92</lpage>
          . doi:
          <volume>10</volume>
          .1145/2755996.2756654.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C. W.</given-names>
            <surname>Brown</surname>
          </string-name>
          ,
          <article-title>Solution formula construction for truth invariant CAD's,</article-title>
          <source>Ph.D. thesis</source>
          , University of Delaware,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>