<!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>Corresponding author.
$ kaiser@zib.de (B. Kaiser); clausecker@zib.de (R. Clausecker); mavroskoufis@zib.de (M. Mavroskoufis)
 https://www.zib.de/members/kaiser (B. Kaiser); https://www.zib.de/members/clausecker (R. Clausecker);
https://www.zib.de/members/mavroskoufis (M. Mavroskoufis)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Prioritised Unit Propagation by Partitioning the Watch Lists</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Benjamin Kaiser</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Robert Clausecker</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Mavroskoufis</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Zuse Institute Berlin</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0003</lpage>
      <abstract>
        <p>Conflict Driven Clause Learning ( cdcl) SAT solvers spend most of their execution time iterating through clauses in unit propagation. Eficient implementations of unit propagation mostly rely on the two watched literals (twl) scheme, a specialised data structure watching two literals per clause to prevent as many clause lookups as possible. In this paper, we present Priority Propagation (PriPro)-a minimally invasive method to adapt unit propagation in existing SAT solvers. With PriPro the traditional twl scheme is partitioned to allow for rearranging the order in which clauses are examined. This is used to achieve a prioritisation of certain clauses. Using PriPro in combination with a dynamic heuristic to prioritise resolvents from recent conflicts, the efectiveness of unit propagation can be increased. In the stateof-the-art cdcl SAT solver CaDiCaL modified to use PriPro, we obtained a 5-10 % speedup on the SAT Competition 2021 benchmark set in a fair comparison with the unmodified CaDiCaL.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;SAT</kwd>
        <kwd>Conflict Driven Clause Learning</kwd>
        <kwd>Boolean Constraint Propagation</kwd>
        <kwd>Unit Propagation</kwd>
        <kwd>Two Watched Literals</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Our main contributions are as follows:
• We introduce a novel scheme to prioritise a part of the clause database during propagation.</p>
      <p>
        Prioritisation of clauses is chosen/adjusted dynamically during runtime of the solver. We
name this approach PriPro and describe it in § 3.
• The approach mainly introduces a second twl scheme for prioritised clauses and
dynamically up-/ and downgrades clauses to/from the additional, prioritised twl scheme under
certain conditions. We use a simple parameterised heuristic based on recent resolvents to
decide which clauses should be prioritised (see § 3.3).
• We study the performance of PriPro in comparison to the baseline solver CaDiCaL and
illustrate its impact on the solver’s performance on the problem set of the SAT
Competition 2021 containing 400 problems in terms of number of solved instances and runtime
(see § 5.2, 5.3, and Tables 1, 2).
• The evaluation shows that PriPro is able to solve up to 11 more sat and up to 6 more
unsat instances compared to the baseline solver CaDiCaL, despite the simplicity of the
used prioritisation heuristics. PriPro consistently solves unsat instances significantly
faster than the baseline solver (see § 5).
• We confirm Jingchao Chen’s hypothesis [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] that learning shorter conflict clauses by
rearranging the order of propagation is possible (see § 4.3, 5.2.1).
• We observe particularly good results with a Literals Blocks Distance (lbd) ≤
6 as an
upgrade condition and a scheduled downgrade interval ≥
solving ≈ 12 instances more than the baseline on average (see § 5).
15 000 conflicts leading to
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. SAT Solving Background</title>
      <p>
        A Boolean satisfiability (SAT) problem [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is given by a propositional formula in conjunctive
normal form (CNF) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]
      </p>
      <p>= ⋀︁ (︁ ⋁︁</p>
      <p>︁)
=1 =1</p>
      <p>= (︀ (11 ∨ . . . ∨ 11 ) ∧ . . . ∧ (1 ∨ . . . ∨  )︀) ,
whose disjunctions ⋁︀
=1  are called clauses consisting of literals</p>
      <p>∈ {1, ¬1, 2, ¬2, . . . , , ¬}
for some Boolean variables 1, 2, . . . , .</p>
      <p>
        To solve a SAT problem, an assignment of all variables with truth values from {true, false}
needs to be found such that one literal of each clause is assigned true. This is called a satisfying
assignment. The problem of finding such a solution is NP-hard [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Similarly, constructing a
proof that no such solution exists is co-NP-hard. A SAT solver either finds such a satisfying
assignment or produces a proof that no such assignment exists. We call instances of the
SAT problem that have a satisfying assignment sat instances, the others, unsat instances.
      </p>
      <p>
        Many problems of high interest can be translated to SAT and efectively solved using modern
SAT solvers such as problems arising in circuit design [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], automated planning and scheduling [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ],
automotive software verification [
        <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
        ] or automated theorem proving [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ]. This makes
SAT solving an important topic of current research.
      </p>
      <sec id="sec-2-1">
        <title>2.1. State-of-the-Art Approaches to SAT</title>
        <p>
          SAT instances derived from real world problems have a structure distinct from randomly
generated instances [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. Nevertheless, the immense size of the problems makes it very dificult
or even seemingly impossible to see through and exploit this structure [
          <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
          ]. Modern
SAT solvers accomplish this using Conflict Driven Clause Learning ( cdcl) [
          <xref ref-type="bibr" rid="ref13 ref14">13, 14</xref>
          ], an algorithm
relying on unit propagation, a special case of Boolean Constraint Propagation (bcp) [
          <xref ref-type="bibr" rid="ref15 ref16">15, 16</xref>
          ].
        </p>
        <p>
          A cdcl solver successively chooses variables and assigns them a truth value. Typically, such a
decision is made by first choosing a decision variable according to some decision heuristic [
          <xref ref-type="bibr" rid="ref17 ref18">17, 18</xref>
          ]
and afterwards choosing the truth value according to the variable’s current polarity. The
variables’ polarities are stored in phases, which resemble known and constantly updated information
about promising assignments of the variables [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Switching between diferent phases is called
rephasing [
          <xref ref-type="bibr" rid="ref20 ref21 ref22">20, 21, 22</xref>
          ]. To prevent cdcl solvers from getting stuck in futile parts of the search
space, often restarts are performed [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], i.e. all previous decisions are discarded.
        </p>
        <p>
          After each decision, bcp checks for clauses that have all of their literals assigned false
(a conflicting clause ). In such case, the current partial assignment of the variables is said to
be conflicting . If all but one literal of a clause have been assigned false, the final literal has
to be assigned true to prevent a conflict from occurring. Such assignments are called unit
implications and may in turn result in further unit implications or conflicting clauses. When
a conflict arises, cdcl analyses it and learns a new conflict clause [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] that is added to the set
of clauses representing the problem, i.e. the clause database. Conflict clauses prevent conflicts
from reappearing. The clauses used to form the new conflict clause are called resolvents as
conflict analysis is a specialised application of propositional logic resolution. Learned Clause
Minimisation (lcm) [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] may be used to remove redundant literals from the conflict clause, prior
to adding it to the problem.
        </p>
        <p>
          In order to restore a non-conflicting assignment during the solving process, some decisions
are reversed in a process called backtracking [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]. During backtracking, some recent decision
that lead to the conflict can be (and typically is) replaced by a unit implication resulting from
the newly learned conflict clause. Traditionally, backtracking is performed by backjumping
resp. non-chronological backtracking, which reverses (possibly) several decisions at once. More
recently, only reversing the most recent decision, i.e. chronological backtracking [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ], became
widely used, but its implementation and theory is more involved.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Deleting Useless Clauses</title>
        <p>
          As the cdcl algorithm progresses, growth of the clause database adversely afects propagation
speed (and may exhaust available memory). Therefore, SAT solvers commonly implement
clause deletion policies, reducing the size of the clause database every once in a while [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ]. This
concept was already implemented in various ways in the first cdcl solvers [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]. But many
clause deletion heuristics evolved and were discussed later [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ]. Deciding which clauses aid
the solving process best remains challenging as the wide variety of diferent clause deletion
heuristics indicates. Such approaches use heuristics based on clause activity and Literals Blocks
Distance (lbd) [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] and include clause grouping mechanisms such as the core tier of almost never
deleted clauses and the mid tier of clauses that are spared from deletion for some time [
          <xref ref-type="bibr" rid="ref30 ref31">30, 31</xref>
          ].
        </p>
        <p>
          Later, it was discovered that deleting clauses not only speeds up unit propagation, but may
be vital for the cdcl algorithm to find shorter proofs. In unsat instances, up to 50 % of the
learned clauses appear to be not required to complete the found proof [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]. Moreover, a more
aggressive clause deletion heuristic based on the lbd of clauses leads to a solver whose proofs
require even fewer clauses [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ].
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Avoiding Clause Lookups</title>
        <p>The speed of unit propagation can be improved by ignoring clauses that can neither lead to
unit propagation nor conflicts. When searching for conflicts and implications in the current
state of the problem, it is a simple optimisation to only iterate through clauses containing newly
falsified literals. With occurrence lists one can keep track of the clauses in which a literal occurs.
When searching for conflicts, this mechanism can be optimised using watch lists instead of full
occurrence lists. Each clause is watched through one of its literals by saving a watch referencing
the clause in the literal’s watch list. Only if this literal is assigned false, we need to check for
conflicts in the clause. If the clause is found not to conflict, it is moved to the watch list of one
of its literals currently assigned true or unassigned. However, by iterating over watch lists in
this one watched literal (owl) scheme, it is not possible to detect all unit implications.</p>
        <p>
          To additionally support searching for unit implications, one can adapt owl to watching two
distinct literals per clause. Only if one of those two literals is assigned false, we need to check
for a unit implication or conflict in this clause. Conceptually, such a two watched literals (twl)
scheme [
          <xref ref-type="bibr" rid="ref33 ref34">33, 34</xref>
          ] resembles owl, but its implementation is more complex. When chronological
backtracking is used, the situation is further complicated by out-of-order literals and missed lower
implications [
          <xref ref-type="bibr" rid="ref26 ref35">26, 35</xref>
          ]. However, the implementation of PriPro is orthogonal to chronological
backtracking and a discussion of chronological backtracking is beyond the scope of this paper.
        </p>
        <p>
          twl can be improved by augmenting each watch with another literal of the referenced clause,
called the blocking literal [
          <xref ref-type="bibr" rid="ref36 ref37 ref38">36, 37, 38</xref>
          ]. If the blocking literal is assigned true, the referenced clause
neither can lead to an implication nor a conflict. This way, unnecessary clause dereferences
can potentially be avoided and—in such case—the watch does not need to be moved to another
literal’s watch list. The majority of state-of-the-art cdcl SAT solvers use such a twl scheme
with blocking literals [
          <xref ref-type="bibr" rid="ref28 ref39 ref40 ref41">39, 40, 28, 41</xref>
          ]. Even further optimisations of the twl scheme are possible
by moving the watches in a circular manner if no conflict or unit implication is found [
          <xref ref-type="bibr" rid="ref42">42</xref>
          ].
Recently, new research towards watcher placement emerged, e. g. so-called stable watches [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ].
        </p>
        <p>The use of existing techniques to avoid clause lookups is largely based on highly-specialised
data structures. While not explicitly intended, all these techniques change the order in which
implications are found, leading to diferent conflicts being found and implication graphs
constructed. So, the solver takes a diferent search path and learns diferent clauses during conflict
analysis. Some related techniques with similarly small changes to the propagation order, in
contrast, deliberately cause changes on the solver’s path through the search space. We discuss
them separately in § 4, where we also discuss their role as a predecessor to the algorithmic idea
of PriPro presented in § 3.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Priority Propagation</title>
      <p>Priority Propagation (PriPro) is an adaptation of unit propagation that reduces the number of
clauses considered during propagation without directly deleting the remaining clauses. Other
techniques for faster propagation typically avoid looking at clauses either by clause deletion or
by augmenting the solver’s data structures without the intent to significantly impact the search
path.</p>
      <p>In contrast, PriPro aims at preventing direct clause deletion and instead focusing the
propagation to a subset of prioritised clauses. Thereby, it deliberately and significantly impacts the
search path. We thus would like to determine by some heuristic which clauses are likely to be
relevant and only consider remaining clauses once further propagations from the prioritised
clauses cannot be obtained. Potentially, this permits the solver to focus on a set of clauses that
appear to be useful in the current situation without disregarding other clauses that our heuristic
has missed. We discuss the algorithm of unit propagation with PriPro and its implementation
to typical state-of-the-art SAT solvers in the following.</p>
      <sec id="sec-3-1">
        <title>3.1. Prioritised Clauses and Prioritised Watches</title>
        <p>With PriPro, we partition the clauses into two distinct groups. One consists of prioritised clauses,
which are to be propagated with high priority, and the other of regular clauses to be propagated
with regular priority.</p>
        <p>As in the traditional approach to the twl scheme for fast unit propagation, with PriPro, each
clause is watched through exactly two of its literals and watch lists store which clauses are
watched. For each literal lit, its watch list is a dynamically sized vector wtab[lit] that holds
all watches corresponding to clauses watched with respect to lit. However, to hold watches of
prioritised clauses, for each literal lit a second watch list pripro_wtab[lit] is introduced.
We call this additional watch list the prioritised watch list and the prioritised watch lists form
the prioritised twl scheme. Efectively, with PriPro the original twl scheme is partitioned into
two by moving the watches of prioritised clauses from the original resp. regular twl scheme
containing regular watches to the prioritised twl scheme containing prioritised watches.</p>
        <p>Whenever we want to prioritise a regular clause c, we move both watches corresponding
to c from the regular twl scheme to the prioritised twl scheme. I. e., if w is one of those two
watches of clause c, and w corresponds to literal lit, we move w from the regular watch list
wtab[lit] of lit to the end of its prioritised watch list pripro_wtab[lit]. We refer to
this as upgrading the clause c. We downgrade clauses analogously with the two twl schemes
swapped. When upgrading or downgrading a clause, one might preserve the blocking literal (or
any other information stored in the watches such as the clause’s size). In CaDiCaL_PriPro a
new blocking literal is chosen as if the clause was newly learned.</p>
        <p>To implement PriPro in a solver that uses preprocessing and/or inprocessing techniques that
depend on the original twl scheme, it is often suficient to downgrade all clauses before such a
technique is applied, without any changes to its implementation. Downgrading clauses may
also be necessary before clause database reductions. In PriPro, one bit in the clause header may
be used to signal whether a clause is currently prioritised or not. This allows for a temporary
removal and later attachment of the clause from/to the correct twl scheme. In CaDiCaL,
such a temporary detachment of a clause from the twl scheme is used during analysis when
chronological backtracking is utilised. No other adjustment is necessary to combine PriPro with
the implementation of chronological backtracking in CaDiCaL.</p>
        <p>
          Due to implementation dificulties, we were not able to combine PriPro with CaDiCaL’s
compacting pre- and inprocessing technique [
          <xref ref-type="bibr" rid="ref44">44</xref>
          ]. Compacting removes variables from the
solver that are no longer used, restoring a contiguous interval of variables. For example,
variables whose assignment is fixed can be removed and the others renumbered appropriately.
In CaDiCaL_PriPro, compacting is completely disabled. Similar to techniques described in § 2.3,
compacting is an optimisation of the data structures the solver uses. Changes to the search
path due to compacting are most likely negligible and not intended (we include a comparison
of CaDiCaL with and without compacting in the results of § 5.2 without further discussion).
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Changes to Unit Propagation</title>
        <p>
          Traditionally, unit propagation is realised by iterating once through all assigned literals, stored
in order of their assignment in a dynamically sized array called the trail [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. At each literal, all
its watches (and if necessary the corresponding clauses) are examined until either a conflict
or all possible implications have been found. We refer to this as propagating the literal resp.
propagating the literal’s watches (see § 2.3). An integer propagated is used to indicate the
position on the trail up to which the literals have already been propagated, i. e., propagated
indicates the current literal to be propagated.
        </p>
        <p>With PriPro, we distinguish between propagating the literal’s regular watches and the literal’s
prioritised watches. As depicted in Alg. 1, unit propagation is adapted to propagate the prioritised
watches of all newly assigned literals at each iteration step. Only then the regular watches of
the current literal are propagated. One might say that with PriPro, propagating a literal involves
propagating the prioritised watches of all literals on the trail before propagating its regular
watches.</p>
        <p>Algorithm 1 Unit propagation with PriPro
while ¬conflict ∧ propagated ̸= trail_size do
lit ← − trail [propagated ]
propagated ← propagated + 1
conflict← propagate_prioritised_watches ()
if ¬conflictthen</p>
        <p>conflict← propagate_regular_watches_of (lit)
end if
end while
return conflict</p>
        <p>The propagation of the prioritised watches of all literals on the trail is analogous to the
traditional unit propagation and depicted in Alg. 2. Apart from using prioritised watches we
only use a second integer pripro_propagated to indicate the position on the trail up to
which the literals have already been propagated with respect to their prioritised watches.
Algorithm 2 The propagate_prioritised_watches function
while ¬conflict ∧ pripro_propagated ̸= trail_size do
lit ← − [pripro_propagated ]
pripro_propagated ← pripro_propagated + 1
conflict← propagate_prioritised _watches_of (lit)
end while
return conflict</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Selecting Clauses of Higher Priority</title>
        <p>PriPro leaves room to experiment with various clause selection heuristics to decide which and
when clauses are up- or downgraded. Inspired by clause deletion heuristics, we assumed that
resolvents are likely to become relevant soon again. Such clauses are thus considered for an
immediate upgrade. However, only clauses of up to some fixed lbd/size threshold are upgraded,
avoiding to propagate those considered to be less useful (see § 2.2). In the default configuration,
the threshold is set to an lbd of ≤ 6. We discuss the efect of varying this parameter in § 5.2.
Moreover, newly learned clauses are considered useful, regardless of their lbd and size, and are
initially prioritised. As newly learned conflict clauses are assumed to prevent the same conflict
from reappearing, the corresponding conflicting clauses are never upgraded, despite being a
resolvent. At the beginning of the solving process, clauses from the original problem did not
yet participate in any conflicts, and accordingly are initially not prioritised.</p>
        <p>Prioritising more and more clauses eventually degrades the algorithm to behave like unit
propagation without PriPro. Therefore, it seems necessary to downgrade clauses at some point.
As discussed in § 3.1, combining PriPro with some pre- and inprocessing techniques can be
done by downgrading all prioritised clauses at once before applying that pre- or inprocessing
technique. Inspired by such forced downgrades, we only consider heuristics that downgrade all
prioritised clauses at once, instead of downgrading clauses individually.</p>
        <p>We downgrade under the following five conditions. We perform downgrades ( 1) prior to
any pre- or inprocessing technique, (2) prior to clause database reductions and (3) at rephasing.
Optionally, we may perform downgrades (4) at restarts (but not in our default configuration).
For simplicity, we consider downgrades performed at the events (2)–(4) as forced, too, despite
not being necessarily required. In addition to forced downgrades, we perform (5) scheduled
downgrades, which are performed at a constant interval. The interval between scheduled
downgrades is chosen to be a constant number of conflicts, and scheduled downgrades are
performed even if forced downgrades occurred in the meantime. If the downgrade interval is
chosen to be large enough, forced downgrades dominate. Scheduled downgrades then play the
role of periodically cutting apart the interval between two forced downgrades.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Related Work</title>
      <p>Similarly to PriPro, and in contrast to fundamental propagation techniques described in § 2, some
propagation techniques deliberately rearrange the order of propagation. Most importantly, the
propagation of binary clauses is often favoured over the propagation of other clauses (see § 4.1).
In proof validation, fewer clauses need to be checked if during (reverse) unit propagation
yet-unused clauses are considered last (see § 4.2). Also, it was tried to sort the watches within
a literal’s watch list to propagate low lbd clauses first (see § 4.3). Moreover, a technique to
temporarily detach inactive clauses from the twl scheme was proposed (see § 4.4).</p>
      <sec id="sec-4-1">
        <title>4.1. Propagating Binary Clauses First</title>
        <p>
          The cost of propagating watches of binary clauses can be lowered by storing the other literal
in the watcher and avoiding the dereference of the clause [
          <xref ref-type="bibr" rid="ref45">45</xref>
          ]. For example, it can be stored
as (resp. instead of) the blocking literal. This can be achieved with little to no efect on the
order of propagation, such as in the solver Riss 4.27 [
          <xref ref-type="bibr" rid="ref46">46</xref>
          ]. Highly eficient implementations with
respect to memory and cache usage are possible with a single twl scheme, but are non-trivial
and come with other disadvantages [
          <xref ref-type="bibr" rid="ref47">47</xref>
          ]. Most importantly, storing the binary clause may be
omitted as the clause is implicitly stored through its watches. For example, Kissat [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ] makes
use of this technique.
        </p>
        <p>
          Many solvers such as Glucose [
          <xref ref-type="bibr" rid="ref39">39</xref>
          ] and many of its descendants such as SWDiA5BY [
          <xref ref-type="bibr" rid="ref48">48</xref>
          ],
COMiniSatPS [
          <xref ref-type="bibr" rid="ref49">49</xref>
          ], MapleCoMSPS [
          <xref ref-type="bibr" rid="ref50">50</xref>
          ] and MapleLCMDistChronoBT [
          <xref ref-type="bibr" rid="ref41">41</xref>
          ] introduce a second
twl scheme to handle these binary clauses. For every literal, a second watch list for binary
clauses is added. Such a watch list for binary clauses efectively becomes a simple implication
list and may be implemented as such. When propagating a literal, first the watches of binary
clauses are propagated, and only then are the literal’s remaining watches propagated. This
approach alters the order of propagation in favour of binary clauses. It served as an inspiration
for PriPro to introduce a second twl scheme for prioritised clauses. In other solvers such as
CaDiCaL [
          <xref ref-type="bibr" rid="ref40">40</xref>
          ], a comparable efect on the propagation order is achieved without separate watch
lists for binary clauses by moving watches of binary clauses to the beginning of their literal’s
watch list.
        </p>
        <p>
          Other solvers such as PicoSAT [
          <xref ref-type="bibr" rid="ref51">51</xref>
          ] and PrecoSAT [
          <xref ref-type="bibr" rid="ref52">52</xref>
          ] propagate all binary clauses before
any larger clauses are propagated. In a similar manner, PicoSAT also ensures that all-diferent
constraint (adc) clauses [
          <xref ref-type="bibr" rid="ref53">53</xref>
          ] are checked after all other clauses have been propagated.
CryptoMiniSAT 2.5.0 treats xor clauses [
          <xref ref-type="bibr" rid="ref54 ref55">54, 55</xref>
          ] similarly. This could be seen as a special case of PriPro
with static up-/downgrade heuristics. PriPro difers from these ideas in that we decide based on
dynamic factors which clauses to propagate first.
        </p>
        <p>
          PicoSAT 193 [
          <xref ref-type="bibr" rid="ref52">52</xref>
          ] and CryptoMiniSAT 2.5.0 [
          <xref ref-type="bibr" rid="ref54">54</xref>
          ] furthermore continue to propagate all binary
clauses within a watch list, even if a conflict occurred and use the last binary conflict encountered
instead of the first. This behaviour is inspired by efects observed when minimising learned
clauses [
          <xref ref-type="bibr" rid="ref24 ref54">54, 24</xref>
          ]. It may be regarded as reordering the binary watches such that some are
a posteriori ignored. No such ideas were considered in the design of PriPro.
        </p>
        <p>
          For ternary clauses, there exist some optimised propagation mechanisms [
          <xref ref-type="bibr" rid="ref40 ref56">56, 40</xref>
          ], too. But
these are not as widely used as special propagation mechanisms for binary clauses.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Reducing Proof Checking Efort</title>
        <p>
          The result that a problem is unsatifisable can be verified by validating proofs emitted by the
SAT solver with external, possibly mechanically verified tools [
          <xref ref-type="bibr" rid="ref57 ref58 ref59">57, 58, 59</xref>
          ]. While other proof
formats exist [
          <xref ref-type="bibr" rid="ref60">60</xref>
          ], clausal proofs [
          <xref ref-type="bibr" rid="ref61">61</xref>
          ] consisting of a sequence of clauses learned during solving
process are commonly used, e.g. in SAT Competitions [
          <xref ref-type="bibr" rid="ref62">62</xref>
          ]. Checking a clausal proof involves
checking that each clause in this sequence is derivable from clauses in the original formula and
clauses appearing earlier in the sequence. Additionally provided clause deletion information
may be necessary or helpful to be taken into account during the validation process [
          <xref ref-type="bibr" rid="ref63">63, 64</xref>
          ].
        </p>
        <p>
          A common optimisation of the proof validation process is to check the clauses in the proof
in reverse order. Such backwards checking [
          <xref ref-type="bibr" rid="ref61">61</xref>
          ] starts with the last clause (which must be the
empty clause). During the validation of each clause in the proof, all clauses that were used by
the proof checker in the clause’s derivation are marked as core clauses [65]. The validation of
unmarked clauses in the sequence can then be skipped as they have not been used by the proof
checker in the derivation of the empty clause.
        </p>
        <p>Validation of clauses learned during ‘pure’ cdcl is possible with reverse unit propagation [66],
i.e., by performing unit propagation on the negation of the literals in the to-be-checked clause
using only clauses in the original formula and clauses appearing earlier in the proof sequence.
To minimise the number of clauses that need to be added to the core, the propagation of
noncore clauses can be postponed until propagation of core clauses is complete [65] (which is an
adaption of a technique used in Minimal Unsatisfiable Core Extraction to increase the chances
of learning remainder clauses [67]). Such CoreFirstBCP then proceeds to propagate non-core
clauses until a single implication is derived (or a conflict is detected) and immediately returns
to propagate core clauses with the newly derived implication.</p>
        <p>The prioritisation of core clauses in CoreFirstBCP resembles PriPro, but its aim, application
context and the necessary means for an implementation difer. In backwards checking, the goal
of propagating core clauses first is to reduce the number of clauses that need to be validated in
the proof. Accordingly, returning to propagate core clauses after each new implication is likely
essential. To implement this, the position of the last propagated watcher to non-core clauses
needs to be preserved. Later, the propagation of non-core clauses needs to be resumed at this
position.</p>
        <p>In the context of regular SAT solving, no such considerations are necessary. Hence, to realise
PriPro, a simpler propagation scheme can be used. Moreover, a dynamic prioritisation of useful
clauses is possible. While an implementation of CoreFirstBCP using two twl schemes would
be possible, it was implemented using a single twl scheme in the proof checker drup-trim [65]
and its successor drat-trim [64], adding further complexity.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Core First Unit Propagation</title>
        <p>
          Inspired by CoreFirstBCP from proof validation [68] and other more recent techniques from
(verified) proof validation [ 69, 70], Jingchao Chen studied reordering the watch lists during
SAT solving to potentially propagate more useful clauses rfist. His approach, Core First Unit
Propagation (cfup) [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], as implemented in the solvers Smallsat, Optsat and
MapleLCMdistCBTcoreFirst [71], was to move watches of clauses with an lbd of ≤ 7 within the watch list of a
literal to its beginning. His hypothesis was that prioritising these clauses during propagation
leads to more useful conflicts, resulting in shorter conflict clauses learned.
        </p>
        <p>Jingchao Chen’s experiments suggest that a small performance improvement over the
reference solver MapleLCMDistChronoBT is possible, if cfup is used only for some million conflicts
after which the solver switches back to propagate normally using bcp. When using cfup during
an initial phase of 2 million conflicts, the solver was able to solve a couple of sat instances
more and for most unsat instances the runtime of the solver was comparable to the runtime
without cfup. He suspects that as the solver learns more and more clauses of low lbd,1 cfup
deteriorates to behave similarly to bcp without cfup, but with a higher runtime cost. However,
he did not investigate the efects of cfup on the solving process, such as whether there is a
reduction in learned clause size.</p>
        <p>PriPro was inspired by cfup to focus on clauses of low lbd in its default configuration.
However, unit propagation and the order of propagation in PriPro are altered beyond the scope
of individual literal’s watch lists—to an extent that is only comparable to how all binary clauses
are propagated first in PicoSAT, PrecoSAT 193 and CryptoMiniSAT (see § 4.1), and how the
propagation of not-yet-used clauses is delayed in backwards proof checking (see § 4.2).</p>
      </sec>
      <sec id="sec-4-4">
        <title>4.4. Freezing Clauses</title>
        <p>Audemard et al. introduced the idea to freeze clauses by detaching them from the
twl scheme [72]. In contrast to deleted clauses, frozen clauses have the chance to be
reactivated. By freezing clauses during clause database cleanings instead of deleting them, the
deletion of only temporarily inactive clauses may be prevented. Simultaneously, propagation
speed is retained as if the clauses had been deleted.</p>
        <p>In addition to freezing inactive clauses during clause database cleanings, clauses which had
been suficiently long frozen were deleted and others reactivated. Audemard et al. based the
decisions which clauses would be frozen or reactivated on the progress saving based quality
measure (psm). This highly dynamic heuristic is based on the current phase and the clause’s
literals, but independent of whether the variables are currently assigned. It roughly captures
how many variables would need to switch their polarity before the clause may lead to a unit
implication or conflict.</p>
        <p>In experiments, Audemard et al. verified that psm is indeed a good indicator for how often
clauses are used during unit propagation and that freezing clauses aids the solving process. The
idea of freezing clauses may be regarded as a predecessor of PriPro in which only prioritised
clauses are propagated, and the up- and downgrade heuristic is based on psm. However, the
ideas of freezing clauses and PriPro are somewhat complementary, and combining them in
future research seems interesting.
1In MapleLCMDistChronoBT, clauses of lbd ≤ 3 in particular accumulate in the core tier (see § 2.2) and are mostly
spared from deletion.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Experimental Results</title>
      <p>
        To empirically evaluate the efect of PriPro, we have implemented this approach in the
solver CaDiCaL [
        <xref ref-type="bibr" rid="ref40">40</xref>
        ] (the baseline solver), resulting in the solver CaDiCaL_PriPro. We have
not further analysed our previous PriPro implementation in CleanMaple [73, 74]. The version
of CaDiCaL_PriPro discussed here difers from the one submitted to SAT Competition 2021
in some minor bug fixes discovered during the review of a previous draft of this paper. 2 As
discussed in § 3.1, CaDiCaL_PriPro cannot make use of compacting. To obtain more meaningful
results, we also disable compacting in the baseline solver for our measurements. However, we
include a comparison of CaDiCaL with and without compacting in the results of § 5.2 without
further discussion.
      </p>
      <p>To evaluate the performance of CaDiCaL_PriPro for various parameter combinations, we
tested the solvers on the SAT Competition 2021 problem set [75]. The set was obtained from the
Global Benchmark Database (gbd) [76], following established conventions in the SAT community.
This problem set contains 400 problem instances both from theoretical and practical domains,
and a time limit of 5 000 seconds per instance was used. The results presented in the following
sections were computed on a 48 node cluster. Each node is a Dell PowerEdge C6520 server,
iftted with 1024 GiB of memory and two Intel Xeon Gold 6338 processors with 32 cores each.
Solvers were run in parallel with one solver process per core and hyper threading disabled,
providing 16 GiB of memory for each solver process. To avoid variations in runtime, no other
jobs were run during our measurements.</p>
      <p>The results for the number of solved instances and the npar2 score (see § 5.2) were collected
in a run separate from the other statistics, such that their collection does not afect the solver’s
performance. Furthermore, the results of the up- and downgrade tests were collected in another
separate run. In the end, we added some further downgrade variants, leading to five runs in
total. All of these were performed under the exact same conditions. For each run, the baseline
solver was re-run and additional solvers were run as needed, always using the whole benchmark
set. The results of individual runs of the baseline varied by up to 2 instances more or less solved,
but were overall very consistent with the npar2 score (see § 5.2) having a standard deviation of
just  = 12.3 ( = 5, ¯ = 3303.02).</p>
      <sec id="sec-5-1">
        <title>5.1. Increased Variance with PriPro</title>
        <p>During evaluation of the runs, we observed an anomaly: the PriPro variant with a downgrade
interval of 10 000 performed much worse than other comparable PriPro variants. We decided to
rerun the measurements of this variant to exclude measurement error. As the parameters of the
PriPro variant “no scheduled downgrade” of § 5.2 are identical to the parameters of the PriPro
variant “lbd ≤ 6” of § 5.3, we obtained another pair of measurements that can be compared.</p>
        <p>When comparing the two runs of the interval 10 000 downgrade-variant, we noticed that
the new run of the interval 10 000 variant solved 8 instances more (5 on unsat, 3 on sat), and
2Thanks to a reviewer, we noticed that in the version of CaDiCaL_PriPro submitted to SAT Competition 2021, a
conflict could in some cases be overwritten by a subsequent binary conflict. Despite this bug, the solver’s correctness
was preserved. In preliminary results, we observed that this bug harmed the performance of the solver, but did not
investigate further.
the npar2 score decreased by 4.18 % from 3 191.18 to 3 057.75. Similarly, when comparing
the two runs of the variant with no scheduled downgrades, we noticed that one of the runs
solved 4 instances more (− 2 on unsat, +6 on sat); the npar2 score decreased by 1.43 % from
2 997.12 to 2 954.13.</p>
        <p>Despite having been run under the same circumstances, no runs of the baseline solver or
variants with PriPro disabled showed such a variability. We suspect that this diference may be
due to cache efects; as PriPro focuses the solver on a smaller working set of clauses, its cache
usage pattern should difer from the baseline solver and may compete with other solvers using
the same shared L3 cache more severely than the baseline solver. We believe these variances do
not significantly impact the observations and conclusion given in this paper.</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2. Varying the Downgrade Interval</title>
        <p>In this subsection, we discuss our experiments with varying downgrade heuristics. In all tested
variants the upgrade condition is chosen to be CaDiCaL_PriPro’s default upgrade heuristic,
i. e., we upgrade conflict clauses with an lbd of 6 or less and newly learned clauses immediately.
As described in § 3.3 we only consider downgrade heuristics in which all clauses are downgraded
at once. All variants downgrade when forced. Most variants additionally perform scheduled
downgrades at a constant downgrade interval. We tested with downgrade intervals ranging
from a very low value of 2 conflicts up to a very high value of 1 000 000 conflicts. In this
subsection, we refer to the variant with the constant downgrade interval of 10 000 conflicts as
the default CaDiCaL_PriPro variant.</p>
        <p>Table 1 shows that most variants solve more instances than the baseline solver. The poor
performance of variants with a downgrade interval of less than 50 is due to unsat instances.
Solving sat instances seems to be less afected by too small downgrade intervals, but in general
large downgrade intervals appear to be beneficial. From the absolute numbers of solved instances,
PriPro seems to improve the performance on sat instances in particular. However, measurements
on sat instances are particularly noisy and are known to fluctuate with even slight variations
in any solver parameter.</p>
        <p>We have studied scatter plots of the PriPro variants against the baseline solver (cf. Fig. 1)
which paint a diferent picture. Scatter plots depict the solving times of two solvers in relation
to each other for each instance individually, i. e., the speedup or slowdown on each instance can
be seen. For all variants with suficiently large downgrade intervals (including no scheduled
downgrades) we observe a clear tendency of PriPro to reduce runtime on unsat instances. No
such tendency is apparent for sat instances. We have included plots comparing against the
baseline solver with compacting (Fig. 1b), and corresponding cactus plots (Fig. 2).</p>
        <p>
          Due to using a timeout, in SAT solving statistical analysis of solver runtimes/speedups is
dificult. Comparing the speed of two solvers is only possible on instances that have been solved
by both. To overcome dificulties with instances that have been solved by only one of the two
solvers, the par2 score is frequently used. par2 treats unsolved instances as having been solved
in twice the timeout. We normalise the par2 score by dividing by the number of instances in
the benchmark set, giving the npar2 score [
          <xref ref-type="bibr" rid="ref43">43</xref>
          ]. The npar2 score is superficially comparable to
an average runtime and useful to measure the dificulty of two problem sets with respect to a
given solver (even if these two sets contain a diferent amount of instances).
        </p>
        <p>Results from the revised run, see remark in § 5.1.</p>
        <p>Relative values refer to the baseline solver ( comp. of ) of the same run.</p>
        <p>The npar2 score of the baseline solver is 3282.93 and the npar2 score of the default PriPro
variant is 10.0 % lower. Across a wide range of downgrade intervals, PriPro shows a tendency
of speeding up the solving process on unsat instances more than on sat instances. This is
despite the efect on the number of solved instances being more pronounced for sat instances.</p>
        <p>sat
▷ PriPro is faster when below diagonal unsat
5000s
sat
▷ PriPro is faster when below diagonal unsat
5000s
4000s
3000s
o
r
P
i
r
P2000s
1000s
0s
0s
4000s
3000s
o
r
P
i
r
P2000s
1000s
0s</p>
        <p>0s</p>
        <p>To evaluate the actual speedup, we are forced to ignore between 5.70 % and 9.24 % of
instances that were only solved by one of two solvers (6.43–12.33 % on sat, 3.16–7.41 %
on unsat). While this introduces some uncertainty, it is worth noting that CaDiCaL_PriPro’s
default variant solves 80 % solved unsat instances faster than the baseline solver (120 of 150
mutually solved instances). In fact, each variant with a downgrade interval of 750 conflicts or
more leads to a speed up on at least 66 % of all unsat instances that where solved by both, that
variant and the baseline solver.
5.2.1. Further analysis
For the variants with a downgrade interval of 2, 5, 50, 500, 5 000, 50 000, as well as for the
variant with no scheduled downgrades and the variant with downgrades at restarts, we collected
further metrics.</p>
        <p>We noticed that with PriPro the solver learns shorter clauses. We compared the average
learned clause size before (resp. after) lcm of the solvers with PriPro to the average learned
clause size before (resp. after) lcm of the baseline solver. For the length of learned clauses with
downgrade intervals of 5 000 or longer (including at restarts), we observed that the pre-lcm
length was reduced by about 7 % for sat instances and about 11 % for unsat instances. After
lcm, the reduction grows to 21 % for unsat instances, but drops to about 6 % for sat instances.
Therefore, the implementation of PriPro in CaDiCaL supports Jingchao Chen’s hypothesis that
a diferent propagation order may reduce the learned clauses’ size.</p>
        <p>The average efective downgrade interval , i. e., the actual number of conflicts between two
downgrades regardless of whether these are scheduled or forced, is close to the scheduled
downgrade interval as long as the scheduled downgrade interval is less than about 500. As the
downgrade interval grows, forced downgrades increasingly preempt scheduled downgrades,
0 20 40 60 80 100 120 140 160 180
number of solved instances
0
capping the average efective downgrade interval at about 15 000 even if there are no scheduled
downgrades. We expect these numbers to depend strongly on the number and frequency of
inprocessing techniques and whether these force downgrades or not. In CaDiCaL, the variant
with downgrades at restarts has an average efective downgrade interval of about 40.</p>
      </sec>
      <sec id="sec-5-3">
        <title>5.3. Varying the Upgrade Condition</title>
        <p>In this subsection, we discuss our experiments of varying the upgrade conditions as depicted in
Table 2. As discussed in § 3.3, we upgrade conflict clauses if a further condition is met. As this
condition, we chose to only upgrade clauses of small lbd, smaller than some constant threshold,
or similarly, to only upgrade clauses of small size with respect to some constant threshold.
Furthermore, we tested a variant in which every conflict clause is upgraded regardless of its
size or lbd (always).</p>
        <p>For the number of overall solved instances, we noticed that PriPro performs well for a wide
range of choices of lbd/size limits. Mainly, an unreasonably small lbd limit leads to poor
performance. Variants with a large or no size limit solve the most sat instances. In general,
variants with a size limit solve more additional sat instances than additional unsat instances.
In contrast to that, variants with an lbd limit solve the most unsat instances, but perform
well on sat instances, too. Looking at the npar2 score confirms these observations. We thus
recommend an lbd limit for general instances and a large size limit or no limit when it is known
or suspected that the instance is satisfiable.</p>
        <p>The results of this subsection give the impression that the improvement on unsat instances
observed in § 5.2 is strongly influenced by the choice of using an lbd limit in these measurements.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>PriPro is a technique to propagate clauses that are deemed more useful first. We have shown
how PriPro is used with simple and yet efective dynamic heuristics to improve CaDiCaL’s
performance. Moreover, we observe a significant reduction of learned clause size of about 20 %
on unsat instances and 6 % on sat instances. As seen in Tables 1 and 2, this improvement
is robust for diferent parameters of our up- and downgrade heuristics. Most variations solve
more instances than the baseline. Even in the worst case, we only observe a slight decrease in
the number of instances solved. Based on the observed performance of lbd and size limits, we
recommend upgrading resolvents based on an lbd limit. A size limit, or no limit may be used to
solve sat instances in particular. Using an lbd limit of ≤ 6 and a downgrade interval of 15 000
seems to be an overall good choice. However, a wide range of parameters for both the upgrade
conditions and the downgrade intervals appear reasonable and yield comparable results.</p>
      <p>To solve unsat problems, the downgrade interval should be chosen to be at least 250. For
sat problems a larger downgrade interval of at least 15 000 appears sensible. If a solver forces
downgrades for pre-/inprocessing techniques, rephasing, clause database reductions or similar,
experimenting with no scheduled downgrades may be interesting for solving sat instances.</p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <p>We would like to thank the IT and data services members of Zuse Institute Berlin for providing
the infrastructure, and Florian Schintke for his work in reviewing the paper and for his many
useful suggestions and improvements. Benjamin Kaiser would like to thank Marc Hartung,
his former advisor, for introducing him to the SAT problem. The authors are grateful for the
services provided by the Global Benchmark Database.
Verification and Reliability 24 (2014) 593–607.
[64] N. Wetzler, M. J. H. Heule, W. A. Hunt, DRAT-trim: Eficient Checking and Trimming
Using Expressive Clausal Proofs, in: C. Sinz, U. Egly (Eds.), Theory and Applications
of Satisfiability Testing – SAT 2014, Springer International Publishing, Cham, 2014, pp.
422–429.
[65] Heule, Marijn J.H. and Hunt, Warren A. and Wetzler, Nathan, Trimming while Checking
Clausal Proofs, in: 2013 Formal Methods in Computer-Aided Design, 2013, pp. 181–188.
doi:10.1109/FMCAD.2013.6679408.
[66] Van Gelder, Allen, Verifying RUP Proofs of Propositional Unsatisfiability., in: ISAIM, 2008.
[67] Ryvchin, Vadim and Strichman, Ofer, Faster Extraction of High-Level Minimal Unsatisfiable
Cores, in: International Conference on Theory and Applications of Satisfiability Testing,
Springer, 2011, pp. 174–187.
[68] Marijn J.H. Heule, 4th July 2023 at 14th Pragmatics of SAT international workshop, 26th
International Conference on Theory and Applications of Satisfiability Testing (SAT 2023),
personal communication, 2023.
[69] J. Chen, Fast Verifying Proofs of Propositional Unsatisfiability via Window Shifting, 2018.</p>
      <p>arXiv:1611.04838.
[70] P. Lammich, Eficient verified (UN) SAT certificate checking, in: Automated Deduction–
CADE 26: 26th International Conference on Automated Deduction, Gothenburg, Sweden,
August 6–11, 2017, Proceedings, Springer, 2017, pp. 237–254.
[71] J. Chen, Smallsat, Optsat and MapleLCMdistCBTcoreFirst: Containing Core First Unit</p>
      <p>Propagation, SAT RACE 2019 (2019) 31.
[72] G. Audemard, J.-M. Lagniez, B. Mazure, L. Sais, On freezing and reactivating learnt
clauses, in: Theory and Applications of Satisfiability Testing-SAT 2011: 14th International
Conference, SAT 2011, Ann Arbor, MI, USA, June 19-22, 2011. Proceedings 14, 2011, pp.
188–200. doi:10.1007/978-3-642-21581-0_16.
[73] B. Kaiser, R. Clausecker, CleanMaple, in: T. Balyo, N. Froleyks, M. J. H. Heule, M. J. Järvisalo,
M. Suda (Eds.), Proceedings of SAT Competition 2021 : Solver and Benchmark
Descriptions, volume B-2021-1 of Department of Computer Science Report Series B, Department of
Computer Science, University of Helsinki, 2021, p. 24.
[74] B. Kaiser, R. Clausecker, CleanMaple_PriPro, CaDiCaL_PriPro and
CaDiCaL_PriPro_no_bin, in: T. Balyo, N. Froleyks, M. J. H. Heule, M. J. Järvisalo, M. Suda (Eds.),
Proceedings of SAT Competition 2021 : Solver and Benchmark Descriptions, volume
B-2021-1 of Department of Computer Science Report Series B, Department of Computer
Science, University of Helsinki, 2021, p. 25.
[75] SAT Competition 2021 Problems, 2021. [Online; accessed 19. Mar. 2023].
[76] M. Iser, C. Sinz, A Problem Meta-Data Library for Research in SAT, in: D. L. Berre,
M. Järvisalo (Eds.), Proceedings of Pragmatics of SAT 2015 and 2018, volume 59 of EPiC
Series in Computing, 2019, pp. 144–152. doi:10.29007/gdbb.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Chen</surname>
          </string-name>
          , Core First Unit Propagation, arXiv preprint arXiv:
          <year>1907</year>
          .
          <volume>01192</volume>
          (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D. E.</given-names>
            <surname>Knuth</surname>
          </string-name>
          ,
          <source>The Art of Computer Programming</source>
          , volume
          <volume>4B</volume>
          ,
          <string-name>
            <surname>Combinatorial</surname>
            <given-names>Algorithms</given-names>
          </string-name>
          , Part 2,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Heule</surname>
          </string-name>
          ,
          <string-name>
            <surname>H. van Maaren</surname>
          </string-name>
          ,
          <source>Handbook of Satisfiability, Frontiers in Artificial Intelligence and Applications</source>
          , second ed., IOS Press,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Cook</surname>
          </string-name>
          ,
          <article-title>The complexity of theorem-proving procedures</article-title>
          ,
          <source>in: Proceedings of the third annual ACM symposium on Theory of computing</source>
          ,
          <year>1971</year>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>158</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Marques-Silva</surname>
          </string-name>
          ,
          <article-title>Practical applications of boolean satisfiability</article-title>
          ,
          <source>in: 2008 9th International Workshop on Discrete Event Systems</source>
          , IEEE,
          <year>2008</year>
          , pp.
          <fpage>74</fpage>
          -
          <lpage>80</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>H. A.</given-names>
            <surname>Kautz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Selman</surname>
          </string-name>
          , et al.,
          <article-title>Planning as Satisfiability</article-title>
          .,
          <source>in: ECAI</source>
          , volume
          <volume>92</volume>
          ,
          <string-name>
            <surname>Citeseer</surname>
          </string-name>
          ,
          <year>1992</year>
          , pp.
          <fpage>359</fpage>
          -
          <lpage>363</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>E. M.</given-names>
            <surname>Clarke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kroening</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Lerda</surname>
          </string-name>
          ,
          <article-title>A Tool for Checking ANSI-C Programs</article-title>
          , in: International
          <source>Conference on Tools and Algorithms for Construction and Analysis of Systems</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Khurshid</surname>
          </string-name>
          , D. Marinov,
          <article-title>TestEra: Specification-Based Testing of Java Programs Using SAT, Autom</article-title>
          . Softw. Eng.
          <volume>11</volume>
          (
          <year>2004</year>
          )
          <fpage>403</fpage>
          -
          <lpage>434</lpage>
          . doi:{
          <volume>10</volume>
          .1023/B:AUSE.
          <volume>0000038938</volume>
          . 10589.b9}.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Mcgregor</surname>
          </string-name>
          ,
          <source>Automated theorem proving using SAT</source>
          , Clarkson University,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>C. E. Brown,</surname>
          </string-name>
          <article-title>Reducing Higher-Order Theorem Proving to a Sequence of SAT Problems</article-title>
          ,
          <source>Journal of Automated Reasoning</source>
          <volume>51</volume>
          (
          <year>2013</year>
          )
          <fpage>57</fpage>
          -
          <lpage>77</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>T. N.</given-names>
            <surname>Alyahya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. E. B.</given-names>
            <surname>Menai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Mathkour</surname>
          </string-name>
          ,
          <article-title>On the Structure of the Boolean Satisfiability Problem: A Survey, ACM Comput</article-title>
          .
          <year>Surv</year>
          .
          <volume>55</volume>
          (
          <year>2022</year>
          ). URL: https://doi.org/10.1145/3491210. doi:
          <volume>10</volume>
          .1145/3491210.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>C.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Chung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mukherjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Vinyals</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Fleming</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kolokolova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Ganesh</surname>
          </string-name>
          ,
          <article-title>On the Hierarchical Community Structure of Practical Boolean Formulas</article-title>
          , in: C.
          <string-name>
            <surname>-M. Li</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Manyà</surname>
          </string-name>
          (Eds.),
          <source>Theory and Applications of Satisfiability Testing - SAT 2021</source>
          , Springer International Publishing, Cham,
          <year>2021</year>
          , pp.
          <fpage>359</fpage>
          -
          <lpage>376</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J. P.</given-names>
            <surname>Marques-Silva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. A.</given-names>
            <surname>Sakallah</surname>
          </string-name>
          ,
          <article-title>Grasp: A search algorithm for propositional satisfiability</article-title>
          ,
          <source>IEEE Transactions on Computers</source>
          <volume>48</volume>
          (
          <year>1999</year>
          )
          <fpage>506</fpage>
          -
          <lpage>521</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>V.</given-names>
            <surname>Ganesh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. Y.</given-names>
            <surname>Vardi</surname>
          </string-name>
          ,
          <article-title>On the Unreasonable Efectiveness of SAT Solvers</article-title>
          .,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Davis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Putnam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Computing</given-names>
            <surname>Procedure for Quantification Theory</surname>
          </string-name>
          ,
          <source>J. ACM</source>
          <volume>7</volume>
          (
          <year>1960</year>
          )
          <fpage>201</fpage>
          -
          <lpage>215</lpage>
          . URL: https://doi.org/10.1145/321033.321034. doi:
          <volume>10</volume>
          .1145/321033.321034.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>R.</given-names>
            <surname>Zabih</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>McAllester</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Rearrangement</given-names>
            <surname>Search</surname>
          </string-name>
          <article-title>Strategy for Determining Propositional Satisfiability</article-title>
          ,
          <source>in: Proceedings of the Seventh AAAI National Conference on Artificial Intelligence</source>
          , AAAI'
          <fpage>88</fpage>
          , AAAI Press,
          <year>1988</year>
          , p.
          <fpage>155</fpage>
          -
          <lpage>160</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Liang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Ganesh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Zulkoski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zaman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <article-title>Understanding VSIDS Branching heuristics in Conflict-Driven Clause-Learning SAT Solvers</article-title>
          , in: N.
          <string-name>
            <surname>Piterman</surname>
          </string-name>
          (Ed.),
          <source>Hardware and Software: Verification and Testing</source>
          , Springer International Publishing, Cham,
          <year>2015</year>
          , pp.
          <fpage>225</fpage>
          -
          <lpage>241</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Liang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Ganesh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Poupart</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <article-title>Learning Rate Based Branching Heuristic for SAT Solvers</article-title>
          , in: N.
          <string-name>
            <surname>Creignou</surname>
          </string-name>
          , D. Le Berre (Eds.),
          <source>Theory and Applications of Satisfiability Testing - SAT 2016</source>
          , Springer International Publishing, Cham,
          <year>2016</year>
          , pp.
          <fpage>123</fpage>
          -
          <lpage>140</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>K.</given-names>
            <surname>Pipatsrisawat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Darwiche</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A Lightweight</given-names>
            <surname>Component</surname>
          </string-name>
          <article-title>Caching Scheme for Satisfiability Solvers</article-title>
          , in: J.
          <string-name>
            <surname>Marques-Silva</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <article-title>A</article-title>
          .
          <string-name>
            <surname>Sakallah</surname>
          </string-name>
          (Eds.),
          <source>Theory and Applications of Satisfiability Testing - SAT 2007</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2007</year>
          , pp.
          <fpage>294</fpage>
          -
          <lpage>299</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          , CaDiCaL, Lingeling, Plingeling,
          <source>Treengeling and YalSAT entering the SAT Competition</source>
          <year>2018</year>
          , in: M.
          <string-name>
            <surname>J. H. Heule</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          <string-name>
            <surname>Järvisalo</surname>
          </string-name>
          , M. Suda (Eds.),
          <source>Proceedings of SAT Competition</source>
          <year>2018</year>
          :
          <article-title>Solver and Benchmark Descriptions</article-title>
          , volume
          <string-name>
            <surname>B-</surname>
          </string-name>
          <year>2017</year>
          <source>-1</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Biere</surname>
          </string-name>
          , Armin, CaDiCaL, Lingeling, Plingeling,
          <source>Treengeling and YalSAT entering the SAT Competition</source>
          <year>2017</year>
          , in: T. Balyo,
          <string-name>
            <given-names>M. J. H.</given-names>
            <surname>Heule</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Järvisalo</surname>
          </string-name>
          (Eds.),
          <source>Proceedings of SAT Competition</source>
          <year>2017</year>
          :
          <article-title>Solver</article-title>
          and
          <string-name>
            <given-names>Benchmark</given-names>
            <surname>Descriptions</surname>
          </string-name>
          ,
          <source>Department of Computer Science Report Series B</source>
          , Department of Computer Science, University of Helsinki,
          <year>2017</year>
          , pp.
          <fpage>14</fpage>
          -
          <lpage>15</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <source>CaDiCaL at the SAT Race</source>
          <year>2019</year>
          , in: M.
          <string-name>
            <surname>J. H. Heule</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          <string-name>
            <surname>Järvisalo</surname>
          </string-name>
          , M. Suda (Eds.),
          <source>Proceedings of SAT Race</source>
          <year>2019</year>
          :
          <article-title>Solver and Benchmark Descriptions</article-title>
          , volume
          <string-name>
            <surname>B-</surname>
          </string-name>
          <year>2019</year>
          <source>-1</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>G.</given-names>
            <surname>Audemard</surname>
          </string-name>
          , L. Simon,
          <article-title>Refining restarts strategies for sat and unsat</article-title>
          , in: M.
          <string-name>
            <surname>Milano</surname>
          </string-name>
          (Ed.),
          <source>Principles and Practice of Constraint Programming</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2012</year>
          , pp.
          <fpage>118</fpage>
          -
          <lpage>126</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>N.</given-names>
            <surname>Sörensson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <article-title>Minimizing learned clauses, in: Theory and Applications of Satisfiability Testing-SAT</article-title>
          <year>2009</year>
          : 12th International Conference, SAT 2009,
          <article-title>Swansea</article-title>
          ,
          <string-name>
            <surname>UK</surname>
          </string-name>
          , June 30-July 3,
          <year>2009</year>
          . Proceedings 12, Springer,
          <year>2009</year>
          , pp.
          <fpage>237</fpage>
          -
          <lpage>243</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>J. Marques</given-names>
            <surname>Silva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Sakallah</surname>
          </string-name>
          ,
          <article-title>GRASP-A new search algorithm for satisfiability</article-title>
          ,
          <source>in: Proceedings of International Conference on Computer Aided Design</source>
          ,
          <year>1996</year>
          , pp.
          <fpage>220</fpage>
          -
          <lpage>227</lpage>
          . doi:
          <volume>10</volume>
          .1109/ICCAD.
          <year>1996</year>
          .
          <volume>569607</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Nadel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Ryvchin</surname>
          </string-name>
          ,
          <article-title>Chronological backtracking</article-title>
          ,
          <source>in: Theory and Applications of Satisfiability Testing-SAT</source>
          <year>2018</year>
          : 21st International Conference, SAT 2018,
          <article-title>Held as Part of the Federated Logic Conference</article-title>
          ,
          <source>FloC 2018</source>
          , Oxford, UK, July 9-
          <issue>12</issue>
          ,
          <year>2018</year>
          , Proceedings 21,
          <year>2018</year>
          , pp.
          <fpage>111</fpage>
          -
          <lpage>121</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>T.</given-names>
            <surname>Krüger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lorenz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Wörz</surname>
          </string-name>
          ,
          <article-title>Too much information: CDCL solvers need to forget and perform restarts</article-title>
          ,
          <source>CoRR abs/2202</source>
          .01030 (
          <year>2022</year>
          ). URL: https://arxiv.org/abs/2202.01030. arXiv:
          <volume>2202</volume>
          .
          <fpage>01030</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>N.</given-names>
            <surname>Eén</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Sörensson</surname>
          </string-name>
          ,
          <article-title>An Extensible SAT-solver</article-title>
          ,
          <source>in: International Conference on Theory and Applications of Satisfiability Testing</source>
          ,
          <year>2003</year>
          , pp.
          <fpage>502</fpage>
          -
          <lpage>518</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>G.</given-names>
            <surname>Audemard</surname>
          </string-name>
          , L. Simon,
          <article-title>Predicting learnt clauses quality in modern SAT solvers</article-title>
          , in: Twenty-first
          <source>international joint conference on artificial intelligence, Citeseer</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>C.</given-names>
            <surname>Oh</surname>
          </string-name>
          ,
          <string-name>
            <surname>Between</surname>
            <given-names>SAT</given-names>
          </string-name>
          and
          <article-title>UNSAT: The Fundamental Diference in CDCL SAT</article-title>
          , in: M.
          <string-name>
            <surname>Heule</surname>
          </string-name>
          , S. Weaver (Eds.),
          <source>Theory and Applications of Satisfiability Testing - SAT 2015</source>
          , Springer International Publishing, Cham,
          <year>2015</year>
          , pp.
          <fpage>307</fpage>
          -
          <lpage>323</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>C.</given-names>
            <surname>Oh</surname>
          </string-name>
          ,
          <article-title>Improving SAT solvers by exploiting empirical characteristics of CDCL, Ph</article-title>
          .D. thesis, New York University,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>L.</given-names>
            <surname>Simon</surname>
          </string-name>
          ,
          <article-title>Post Mortem analysis of SAT Solver Proofs</article-title>
          , in: D. L.
          <string-name>
            <surname>Berre</surname>
          </string-name>
          (Ed.),
          <source>POS-14. Fifth Pragmatics of SAT workshop</source>
          , volume
          <volume>27</volume>
          of EPiC Series in Computing, EasyChair,
          <year>2014</year>
          , pp.
          <fpage>26</fpage>
          -
          <lpage>40</lpage>
          . URL: https://easychair.org/publications/paper/N3GD. doi:
          <volume>10</volume>
          .29007/gpp8.
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>M.</given-names>
            <surname>Moskewicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Madigan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , S. Malik,
          <article-title>Chaf: engineering an eficient SAT solver</article-title>
          ,
          <source>in: Proceedings of the 38th Design Automation Conference (IEEE Cat. No.01CH37232)</source>
          ,
          <year>2001</year>
          , pp.
          <fpage>530</fpage>
          -
          <lpage>535</lpage>
          . doi:
          <volume>10</volume>
          .1145/378239.379017.
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <surname>H. Zhang,</surname>
          </string-name>
          <article-title>SATO: An Eficient Propositional Prover</article-title>
          ,
          <source>in: Proceedings of the 14th International Conference on Automated Deduction, CADE-14</source>
          , Springer-Verlag, Berlin, Heidelberg,
          <year>1997</year>
          , p.
          <fpage>272</fpage>
          -
          <lpage>275</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>A.</given-names>
            <surname>Nadel</surname>
          </string-name>
          , Introducing
          <string-name>
            <surname>Intel(R) SAT</surname>
          </string-name>
          <article-title>Solver</article-title>
          , in: K. S. Meel,
          <string-name>
            <surname>O.</surname>
          </string-name>
          Strichman (Eds.),
          <source>25th International Conference on Theory and Applications of Satisfiability Testing (SAT</source>
          <year>2022</year>
          ), volume
          <volume>236</volume>
          of Leibniz International Proceedings in Informatics (LIPIcs),
          <source>Schloss Dagstuhl - Leibniz-Zentrum für Informatik</source>
          , Dagstuhl, Germany,
          <year>2022</year>
          , pp.
          <volume>8</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          :
          <fpage>23</fpage>
          . URL: https: //drops.dagstuhl.de/opus/volltexte/2022/16682. doi:
          <volume>10</volume>
          .4230/LIPIcs.SAT.
          <year>2022</year>
          .
          <volume>8</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hölldobler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Manthey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Saptawijaya</surname>
          </string-name>
          ,
          <article-title>Improving resource-unaware SAT solvers, in: Logic for Programming</article-title>
          ,
          <source>Artificial Intelligence, and Reasoning: 17th International Conference, LPAR-17</source>
          , Yogyakarta, Indonesia,
          <source>October 10-15</source>
          ,
          <year>2010</year>
          . Proceedings 17, Springer,
          <year>2010</year>
          , pp.
          <fpage>519</fpage>
          -
          <lpage>534</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>N.</given-names>
            <surname>Sörensson</surname>
          </string-name>
          , N. Eén, MiniSat
          <volume>2</volume>
          .
          <article-title>1 and MiniSat++ 1.0 - SAT Race 2008 Editions, SAT (</article-title>
          <year>2009</year>
          )
          <fpage>31</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>G.</given-names>
            <surname>Chu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Harwood</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Stuckey</surname>
          </string-name>
          ,
          <article-title>Cache Conscious Data Structures for Boolean Satisfiability Solvers</article-title>
          , JSAT
          <volume>6</volume>
          (
          <year>2009</year>
          )
          <fpage>99</fpage>
          -
          <lpage>120</lpage>
          . doi:
          <volume>10</volume>
          .3233/SAT190064.
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <given-names>G.</given-names>
            <surname>Audemard</surname>
          </string-name>
          , L. Simon,
          <article-title>Glucose: a solver that predicts learnt clauses quality</article-title>
          ,
          <source>SAT Competition</source>
          (
          <year>2009</year>
          )
          <fpage>7</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Fazekas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fleury</surname>
          </string-name>
          , M. Heisinger, CaDiCaL, Kissat, Paracooba,
          <source>Plingeling and Treengeling entering the SAT Competition</source>
          <year>2020</year>
          , in: T. Balyo,
          <string-name>
            <given-names>N.</given-names>
            <surname>Froleyks</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Heule</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Iser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Järvisalo</surname>
          </string-name>
          , M. Suda (Eds.),
          <source>Proc. of SAT Competition 2020 - Solver and Benchmark Descriptions</source>
          , volume
          <string-name>
            <surname>B-</surname>
          </string-name>
          <year>2020</year>
          -1 of Department of Computer Science Report Series B, University of Helsinki,
          <year>2020</year>
          , pp.
          <fpage>51</fpage>
          -
          <lpage>53</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>V.</given-names>
            <surname>Ryvchin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nadel</surname>
          </string-name>
          , Maple_LCM_
          <article-title>Dist_ChronoBT: Featuring chronological backtracking</article-title>
          , in: M.
          <string-name>
            <surname>J. H. Heule</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          <string-name>
            <surname>Järvisalo</surname>
          </string-name>
          , M. Suda (Eds.),
          <source>Proceedings of SAT Competition</source>
          <year>2018</year>
          :
          <article-title>Solver and Benchmark Descriptions</article-title>
          , volume
          <string-name>
            <surname>B-</surname>
          </string-name>
          <year>2018</year>
          <source>-1 of Department of Computer Science Report Series B</source>
          , Department of Computer Science, University of Helsinki,
          <year>2018</year>
          , p.
          <fpage>29</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <surname>I. Gent</surname>
          </string-name>
          ,
          <article-title>Optimal implementation of watched literals and more general techniques</article-title>
          ,
          <source>Journal of Artificial Intelligence Research</source>
          <volume>48</volume>
          (
          <year>2013</year>
          )
          <fpage>231</fpage>
          -
          <lpage>252</lpage>
          .
          <article-title>Includes 2 appendixes: one with additional proofs and one with code, scripts and data</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <given-names>M.</given-names>
            <surname>Iser</surname>
          </string-name>
          , T. Balyo,
          <article-title>Unit Propagation with Stable Watches</article-title>
          , in: L. D.
          <string-name>
            <surname>Michel</surname>
          </string-name>
          (Ed.),
          <source>27th International Conference on Principles and Practice of Constraint Programming (CP 2021)</source>
          , volume
          <volume>210</volume>
          of Leibniz International Proceedings in Informatics (LIPIcs),
          <source>Schloss Dagstuhl - Leibniz-Zentrum für Informatik</source>
          , Dagstuhl, Germany,
          <year>2021</year>
          , pp.
          <volume>6</volume>
          :
          <fpage>1</fpage>
          -
          <issue>6</issue>
          :
          <fpage>8</fpage>
          . URL: https://drops.dagstuhl.de/opus/volltexte/2021/15297. doi:
          <volume>10</volume>
          .4230/LIPIcs.CP.
          <year>2021</year>
          .
          <volume>6</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <given-names>B.</given-names>
            <surname>Dutertre</surname>
          </string-name>
          ,
          <article-title>An Empirical Evaluation of SAT Solvers on Bit-vector Problems</article-title>
          ., in: SMT,
          <year>2020</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>25</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45]
          <string-name>
            <given-names>S.</given-names>
            <surname>Pilarski</surname>
          </string-name>
          , G. Hu,
          <article-title>Speeding up SAT for EDA</article-title>
          ,
          <source>in: Proceedings 2002 Design, Automation and Test in Europe Conference and Exhibition</source>
          , IEEE,
          <year>2002</year>
          , p.
          <fpage>1081</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          [46]
          <string-name>
            <given-names>N.</given-names>
            <surname>Manthey</surname>
          </string-name>
          , Riss
          <volume>4</volume>
          .27, in: A.
          <string-name>
            <surname>Belov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Diepold</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          <string-name>
            <surname>Heule</surname>
          </string-name>
          , M. Järvisalo (Eds.),
          <source>Proceedings of SAT Competition</source>
          <year>2014</year>
          , volume
          <string-name>
            <surname>B-</surname>
          </string-name>
          <year>2014</year>
          -2 of Department of Computer Science Series of Publications B, University of Helsinki, Helsinki, Finland,
          <year>2014</year>
          , pp.
          <fpage>65</fpage>
          -
          <lpage>67</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>
          [47]
          <string-name>
            <given-names>M.</given-names>
            <surname>Soos</surname>
          </string-name>
          ,
          <article-title>On using less memory for binary clauses in lingeling's watchlists - Wonderings of a SAT geek</article-title>
          ,
          <year>2014</year>
          . URL: https://www.msoos.org/
          <year>2014</year>
          /08/ on-using
          <article-title>-less-memory-for-binary-clauses-in-lingeling, [Online; accessed 11</article-title>
          .
          <string-name>
            <surname>Mar</surname>
          </string-name>
          .
          <year>2023</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref48">
        <mixed-citation>
          [48]
          <string-name>
            <given-names>C.</given-names>
            <surname>Oh</surname>
          </string-name>
          ,
          <article-title>Minisat hack 999ed, minisat hack 1430ed and swdia5by</article-title>
          ,
          <string-name>
            <surname>SAT Competition</surname>
          </string-name>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref49">
        <mixed-citation>
          [49]
          <string-name>
            <given-names>C.</given-names>
            <surname>Oh</surname>
          </string-name>
          , Patching MiniSat to Deliver
          <source>Performance of Modern SAT Solvers</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref50">
        <mixed-citation>
          [50]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Liang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Oh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Ganesh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Poupart</surname>
          </string-name>
          ,
          <article-title>Maple-comsps, maplecomsps lrb, maplecomsps chb</article-title>
          ,
          <source>Proceedings of SAT Competition</source>
          <year>2016</year>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref51">
        <mixed-citation>
          [51]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <article-title>PicoSAT essentials</article-title>
          ,
          <source>Journal on Satisfiability, Boolean Modeling and Computation</source>
          <volume>4</volume>
          (
          <year>2008</year>
          )
          <fpage>75</fpage>
          -
          <lpage>97</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref52">
        <mixed-citation>
          [52]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          , P{re,i}coSAT
          <source>@ SC'09, SAT</source>
          <volume>4</volume>
          (
          <year>2009</year>
          )
          <fpage>41</fpage>
          -
          <lpage>43</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref53">
        <mixed-citation>
          [53]
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Brummayer</surname>
          </string-name>
          ,
          <article-title>Consistency checking of all diferent constraints over bit-vectors within a SAT solver, in: 2008 Formal Methods in Computer-Aided Design</article-title>
          , IEEE,
          <year>2008</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref54">
        <mixed-citation>
          [54]
          <string-name>
            <given-names>M.</given-names>
            <surname>Soos</surname>
          </string-name>
          , CryptoMiniSat
          <volume>2</volume>
          .5.0, http://baldur. iti. uka. de/sat-race2010/descriptions/solver_13.
          <string-name>
            <surname>pdf</surname>
          </string-name>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref55">
        <mixed-citation>
          [55]
          <string-name>
            <given-names>M.</given-names>
            <surname>Soos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Nohl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Castelluccia</surname>
          </string-name>
          ,
          <article-title>Extending SAT solvers to cryptographic problems, in: Theory and Applications of Satisfiability Testing-SAT</article-title>
          <year>2009</year>
          : 12th International Conference, SAT 2009,
          <article-title>Swansea</article-title>
          ,
          <string-name>
            <surname>UK</surname>
          </string-name>
          , June 30-July 3,
          <year>2009</year>
          . Proceedings 12, Springer,
          <year>2009</year>
          , pp.
          <fpage>244</fpage>
          -
          <lpage>257</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref56">
        <mixed-citation>
          [56]
          <string-name>
            <given-names>L.</given-names>
            <surname>Ryan</surname>
          </string-name>
          ,
          <article-title>Eficient Algorithms for Clause-Learning SAT Solvers</article-title>
          ,
          <source>Master's thesis</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref57">
        <mixed-citation>
          [57]
          <string-name>
            <given-names>T.</given-names>
            <surname>Weber</surname>
          </string-name>
          , Eficiently Checking Propositional Resolution Proofs in Isabelle/HOL, in:
          <source>International Workshop on the Implementation of Logics (IWIL)</source>
          , volume
          <volume>212</volume>
          ,
          <year>2006</year>
          , pp.
          <fpage>44</fpage>
          -
          <lpage>62</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref58">
        <mixed-citation>
          [58]
          <string-name>
            <surname>Weber</surname>
          </string-name>
          ,
          <article-title>Tjark and Amjad, Hasan, Eficiently Checking Propositional Refutations in HOL Theorem Provers</article-title>
          ,
          <source>Journal of Applied Logic</source>
          <volume>7</volume>
          (
          <year>2009</year>
          )
          <fpage>26</fpage>
          -
          <lpage>40</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref59">
        <mixed-citation>
          [59]
          <string-name>
            <surname>Darbari</surname>
          </string-name>
          ,
          <article-title>Ashish and Fischer, Bernd and Marques-Silva, Joao, Industrial-Strength Formally Certified SAT Solving</article-title>
          ,
          <source>arXiv preprint arXiv:0911.1678</source>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref60">
        <mixed-citation>
          [60]
          <string-name>
            <given-names>L.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , S. Malik,
          <article-title>Validating sat solvers using an independent resolution-based checker: Practical implementations and other applications</article-title>
          , in: 2003 Design, Automation and Test in Europe Conference and Exhibition, IEEE,
          <year>2003</year>
          , pp.
          <fpage>880</fpage>
          -
          <lpage>885</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref61">
        <mixed-citation>
          [61]
          <string-name>
            <given-names>E.</given-names>
            <surname>Goldberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Novikov</surname>
          </string-name>
          ,
          <article-title>Verification of Proofs of Unsatisfiability for CNF Formulas</article-title>
          , in: 2003 Design, Automation and Test in Europe Conference and Exhibition, IEEE,
          <year>2003</year>
          , pp.
          <fpage>886</fpage>
          -
          <lpage>891</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref62">
        <mixed-citation>
          [62]
          <string-name>
            <given-names>SAT</given-names>
            <surname>Competition</surname>
          </string-name>
          ,
          <year>2023</year>
          . URL: https://satcompetition.github.io/2023/certificates.html, [Online; accessed 20.
          <string-name>
            <surname>Jul</surname>
          </string-name>
          .
          <year>2023</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref63">
        <mixed-citation>
          [63]
          <string-name>
            <surname>Heule</surname>
          </string-name>
          ,
          <string-name>
            <surname>Marijn</surname>
            <given-names>JH</given-names>
          </string-name>
          and
          <string-name>
            <surname>Hunt</surname>
            <given-names>Jr</given-names>
          </string-name>
          ,
          <article-title>Warren A and Wetzler, Nathan, Bridging the Gap Between Easy Generation and Eficient Verification of Unsatisfiability Proofs</article-title>
          , Software Testing,
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>