<!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>T</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Improving Watched Pseudo-Boolean Propagation with Significant Literals</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mia Müßig</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Johannsen</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Statistical Learning</institution>
          ,
          <addr-line>ScaDS.AI Leipzig</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institut für Informatik</institution>
          ,
          <addr-line>Ludwig-Maximilians-Universität München</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2025</year>
      </pub-date>
      <volume>1</volume>
      <issue>500</issue>
      <fpage>177</fpage>
      <lpage>189</lpage>
      <abstract>
        <p>A key challenge in pseudo-boolean solving is the eficient detection and processing of unit literals. In SAT solving this is done by using the watched literal scheme, but for general pseudo-boolean constraints there is no dominant method. This paper introduces the significant literal framework to generalize existing watched literal schemes for pseudo-boolean solvers, which is implemented in a modification of the RoundingSAT solver. For this modification, small improvements can be observed on the instances from the decision and optimization tracks of the 2024 Pseudo-Boolean Competition, and a substantial improvement in instances with large coeficients like Knapsack.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Pseudo-Boolean Solving</kwd>
        <kwd>Unit Propagation</kwd>
        <kwd>Watched Literals</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Contemporary satisfiability (SAT) solvers achieve eficiency by conflict driven clause learning (CDCL)
and unit propagation, making them a powerful tool for boolean problems like model checking in chip
development, formal software verification and scheduling problems. On the other hand, Integer Linear
Programming (ILP) solvers use integer relaxation and the branch-and-cut procedure to dominate in
industrial applications including production planning, network optimization and portfolio selection.
Pseudo-boolean solving has emerged as a promising middle ground between the two approaches, aiming
to combine the advantages of both methods. SAT methods like unit propagation and conflict analysis
are now applied to the powerful cutting plane system underlying ILP solvers.</p>
      <p>
        However, neither unit propagation nor conflict analysis can be generalized to arbitrary
pseudoboolean constraints without careful considerations. The latter received significant attention, with
various papers discussing diferent methods of constructing conflict constraints [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
        ]. For unit
propagation, the focus is on adapting the watched literal scheme introduced in the SAT solver Chaf [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
which is part of almost all modern CDCL solvers. However, many teams developing competitive
pseudoboolean solvers observed none to only minimal improvement compared to the simpler counting method
[
        <xref ref-type="bibr" rid="ref1 ref3 ref5">1, 3, 5</xref>
        ]. This changed when Devriendt [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] obtained a significant performance increase for his watched
literal scheme, which replaces the computation of the maximum coeficient of unassigned literals used
to determine the watched literal set by a fixed upper bound. This method has been implemented in the
RoundingSAT solver, which is currently considered the fastest pseudo-boolean solver [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Recently it
has been observed that the performance improvement of watched literals can be amplified by caching
optimizations and a hybrid unit propagation approach [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        This paper aims to demonstrate that the watched literal scheme of RoundingSAT can be further
improved by introducing significant literals, which are especially efective for constraints with large
coeficient sizes. Our approach uses a tighter upper bound by finding the maximum coeficient of
unassigned significant literals, but keeps the fixed upper bound as in Devriendt’s scheme [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for
constraints without significant literals. The significance criterion for literals is determined in such a
way that we strike a balance between time savings from having fewer watched literals and the higher
cost of updating the new watched literal scheme. Additionally, we attempt to explain a connection of
the performance diferences between the various watched literal schemes and the size distributions of
the constraint coeficients.
      </p>
      <p>We give a detailed description of the algorithm behind the significant literal approach in section 3,
and then in section 4 present performance comparisons with the current RoundingSAT implementation
across various datasets.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Preliminaries</title>
      <p>A pseudo-boolean problem consists of variables  ∈ {0, 1}, with literals  representing either  or
 := 1 −  and pseudo-boolean constraints  of the form ∑︀=1  ≥  for ,  ∈ N.</p>
      <p>Without loss of generality we will assume that the coeficients are in descending order, so ∀ :  ≥
+1. A cardinality constraint is a pseudo-boolean constraint with ∀ :  = 1. If additionally  = 1,
the constraint is a clause.</p>
      <p>We denote the current (partial) assignment of the variables  with  , identified with the set of
literals set to 1. The slack of a pseudo-boolean constraint with the current assignment  is defined as
(,  ) = −  + ∑︀∈/ .</p>
      <p>Informally, the slack represents the amount by which the left-hand side can exceed the right-hand
side without unassigning literals. Thus, if (,  ) &lt; 0, the constraint  can not be satisfied with  ,
and we need to backtrack.</p>
      <p>A literal  is called a unit literal, if (,  ) &lt; . This means that  must be set to 1 in order to
satisfy the constraint , as otherwise (,  ∪ {}) &lt; 0.</p>
      <p>For a pseudo-boolean constraint  we denote its watched literals with  (), a subset of its
nonfalsified literals, i.e.  () ⊆ {  ∈  :  ∈/  }. Note that  () depends on the current assignment  .
The maximum coeficient  of a constraint  is defined as  := max{ ∈  : ,  ∈/  }. If all
literals of  are assigned, we define it as  = 0.</p>
      <p>The watch slack is the slack restricted to  (): (,  ) = −  + ∑︀∈ () . By definition
(,  ) ≤ (,  ) holds.</p>
      <p>Lemma 1.  contains a unit literal if and only if no watched literals set  () exists such that
(,  ) ≥ .</p>
      <p>Proof. If  contains a unit literal, then by definition we have an unassigned literal  with (,  ) &lt;
 and  ≥ . So we arrive at  ≥  &gt; (,  ) ≥ (,  ). Thus, no watched literal
set  () with (,  ) ≥  can exist.</p>
      <p>If for all sets of literals  () we have (,  ) &lt; , this also holds true for  () =
{ |  ∈/  }, i.e. if we watch all non-falsified literals. In that case we have (,  ) = (,  ),
leading us to (,  ) &lt; , and therefore the literal corresponding to  must be unit.</p>
      <p>If we replace  with an upper bound, a weaker version of Lemma 1 still holds:
Lemma 2. Let  be an upper bound, i.e.  ≥ . If  contains a unit literal, then no watched
literals set  () exists such that (,  ) ≥ .</p>
      <p>Proof. By Lemma 1 we know that if  contains a unit literal, then we can not choose watched literals
 () such that (,  ) ≥ . Since  ≥ , this immediately implies that we also can
not find  () with (,  ) ≥ .</p>
      <p>
        The problem of using Lemma 1 as a criterion for finding unit literals is that  needs to be known
for all constraints. So every time a variable  is assigned or unassigned, we have to update  in all
constraints that contain  or . This procedure can take up to two thirds of the total unit propagation
runtime [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], and defeats the original purpose of watched literals.
      </p>
      <p>
        RoundingSAT instead uses a criterion based on Lemma 2 with  = 1 [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. As 1 is constant,
no updates are necessary to preserve  ≥ . One downside of this approach is that now our
unit propagation methods can encounter false positives, as the converse of Lemma 2 does not hold
true. Additionally, it often leads to a larger  (), increasing the work necessary for maintaining the
watched literal scheme.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Watched Literal Propagation with Significant Literals</title>
      <p>The idea behind significant literals is finding a middle ground between always updating  and
replacing it with a constant upper bound. For that we choose an arbitrary criterion determining if  is
significant for a constraint . We denote the set of all significant literals for  with (). Since the
criterion does not depend on  , () is constant.</p>
      <p>Now we define  := max{ ∈  : ,  ∈/  ∨  ∈/ ()}, i.e.  is the largest coeficient
of a literal which is either unassigned or not significant. As with , if all literals are assigned and
significant, we simply define  = 0. By definition  ≥ , so we can apply Lemma 2 with
 = .</p>
      <p>
        This framework generalizes the two previously mentioned methods. If we choose a significance
criterion which declares all literals as significant, we have  =  and recover the method which
calculates  for all constraints. If we instead declare no literal to be significant for any constraint,
we have  = 1 and recover the current method in RoundingSAT [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>To elaborate what significance criteria are useful, we look at the following “worst case” constraint
for the current RoundingSAT unit propagation system: 100 + ∑︀1=001  ≥ 10.</p>
      <p>Starting with  = ∅, we have 1 =  = 100 and (,  ) = 190. Then the implementation
iteratively adds watched literals until (,  ) ≥ 100, which results in  () = {, 1, . . . 10}.
If the next decision of the solver is  = {}, all 100  literals will be added to  () without achieving
(,  ) ≥ 100. This means that until the solver reverses the assignment of , the watched set
 () will be unnecessarily large, and no unit literal can exist until at least 90 of the  variables are
assigned.</p>
      <p>When we instead use significant literals and a criterion which declares  to be significant for the
constraint, we only need (,  ) ≥ 1 after  = {}. This allows for the much smaller watched
set  () = {1, . . . 11}, which reduces the workload for updating the watched literal scheme in
further assignments.</p>
      <p>Here the diference between the two watched literal schemes is exaggerated, as the example constraint
is deliberately chosen to amplify this problem. Simply choosing the equivalent constraint 10 +
∑︀1=001  ≥ 10 allows the current RoundingSAT implementation to watch only roughly twice as many
literals as the significant literal approach. However, it still illustrates that the diference between the
two watched literal schemes is mainly dependent on the size of the constraint coeficients. This will
also be supported by empirical evidence in the following section.</p>
      <sec id="sec-3-1">
        <title>3.1. Algorithm</title>
        <p>Algorithm setSmax demonstrates how to set . to the value of . Here .[] is a reference
to a literal  occurring in , .[] denotes its corresponding coeficient, and size() denotes the
number of literals in . We also count the number of backjumps which occurred so far with .
In the while loop we search for an unassigned or non-significant literal, and finish immediately if we
found one. Since the literals in  are sorted by descending order of their coeficients, the first found
literal is guaranteed to have the largest coeficient, and we have found .</p>
        <p>
          To further optimize this procedure, we remember the index  at which we left the loop in the last call
to setSmax. If no backtracking occurred in the meantime, no literals have been unassigned and so all
literals before  are still assigned and significant. Thus, the first condition in algorithm setSmax ensures
that we only restart the search from the beginning if a backjump occurred. This idea is directly inspired
by the algorithm propagate first presented by Devriendt [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. Each time the algorithm propagates the
Algorithm 1 setSmax (constraint )
1: Input: Constraint 
2: if .lastset &lt;  then
3: . ← 1
4: .lastset ← 
5: while . ≤ size() do
6:  ← .[]
7: if ,  ∈/  or  ∈/ () then
8: . ← .[]
9: return
10: . ← . + 1
11: . ← 0
literal  in the constraint  it calls propagate with the constraint and  being set to  to indicate the
index of the propagated literal in .
        </p>
        <p>When we now assign a literal we check in each constraint in which it is significant, if its corresponding
coeficient is equal to  of that constraint. Only if that it is the case, we need to call algorithm
setSmax to update the value. For unassigning we only need to check for each significant constraint if
its corresponding coeficient is bigger than  and if so set  to its coeficient.</p>
        <p>
          Now we need to integrate the new . into the unit propagation of RoundingSAT, which
consists of propagateOpt, processWatches and backjump [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. Luckily only the first routine needs to
be modified into algorithm propagate, since it is the only one dependent on the choice of . This
independence of  also holds for proof of the watch slack invariant [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], which means that all routines
correctly preserve .wslk = (,  ).
        </p>
        <p>However, one has to be careful which optimizations of propagateOpt are still logically sound for a
non-constant . The first optimization can be kept, as the following lemma shows.
Lemma 3. If no backtracking occurred, the while loops in line 7 and 19 can be restarted at the index where
they left of in the last call, without changing the behaviour of the algorithm.</p>
        <p>Proof. Without backtracking any literal assigned in  at the last call to function propagate remain
assigned. Thus, if  is the index, where the while loop of line 7 left of, the literals 1, . . . − 1 either
remain false or are already watched, and we can safely skip them.</p>
        <p>Similarly, if the while loop of line 19 terminates with index , then all literals 1, . . . − 1 are already
assigned. Without backtracking this still holds true now, and we can restart the search with index .</p>
        <p>The second optimization, which skips the search for new watched literals if .wslk + .[] ≥
., does not work for non-constant . The idea behind it is that if at some assignment the while
loop of line 7 terminates because of the condition .wslk &lt; ., all non-falsified literals are
watched. Until we have backtracked so far that this specific assignment is reversed, all non-falsified
literals remain watched, and any further search for new literals to watch will be unnecessary. However,
with a non-constant  further assignments can make it possible to fulfil (,  ) ≥ , even if
that was not possible at some past call. Thus, the optimization can only be applied if  is constant
in the constraint. In our case we simply check this when () = ∅, since we have  = 1 if no
literals are significant for a constraint.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Significance Criteria</title>
        <p>
          We experiment with various significance criteria, which aim to identify literals where the increased
cost of updating  is outweighed by allowing for a smaller watched literal set  (). Let  ∈ N be
a fixed cut-of value, and  ∈ R a fixed scaling factor . We consider the following criteria, where the
literal  with coeficient  is significant for a constraint  if:
Algorithm 2 propagate (constraint , integer ), modification of propagateOpt [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]
1: Input: assignment  , literal , constraint 
2: if .lastprop &lt;  then
3: . ← 1
4: . ← 1
5: .lastprop ← 
6: if .wslk + .[] ≥ . ∨ () ̸= ∅ then
7: while . ≤ size() and .wslk &lt; . do
8: if .[] ∈/  and .[] ∈/  () then
9: ◁ Add .[] to watched literals
10:  () ←  () ∪ {.[]}
11: .wslk ← .wslk + .[]
12: . ← . + 1
13: if .wslk ≥ . then
14: ◁ Enough watched literals, unwatch propagated literal
15:  () ←  () ∖ {.[]}
16: return OK
17: if .wslk &lt; 0 then return CONFLICT
18: ◁ A unit literal could exist
19: while . ≤ size() and .wslk &lt; .[] do
20:  ← .[]
21: if  ,  ∈/  then
22: ◁ Enqueue new unit literal
23:  ←  ∪ { }
24: . ← . + 1
25: return OK
• (Absolute size)  &gt; 
• (Absolute size of maximum coeficient) 1 &gt; 
• (Relative size) 1 &gt;  ∑︀
        </p>
        <p>=2</p>
        <p>It should be noted that for the latter two criterion always either all or none of the literals are declared
to be significant, since the definition does not depend on . Additionally, each of the three criteria can
also be restricted to only input constraints, which we will mark as “ input ∧ criterion” in the legends
of runtime plots. If no criterion is specified, we simply define all literals in input constraints to be
significant.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Experimental Evaluation</title>
      <p>
        To perform the evaluation we use commit d34b6bed of the RoundingSAT solver, which is the latest
version as of December 2024 [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. We extended RoundingSAT to implement the unit propagation with
significant literals. The implementation and the data presented in the following plots are publicly
available [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. It should be noted that - as in the current RoundingSAT implementation - the respective
watched literal scheme is only applied to “true” pseudo-boolean constraints, while clauses and cardinality
constraints are treated separately. Since ∀ :  = 1 applies to clauses and cardinality constraints by
definition, one can simply use the standard watched literal approach from SAT solving with  + 1
watched literals for each constraint.
      </p>
      <p>
        All runtime measurements are done without proof logging, although we verified all certificates of
an independent run using the VeriPB verifier [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. The benchmark was run on an AMD Ryzen 5950X
CPU with a timeout of 3600.
3,500
3,000
2,500
      </p>
      <p>
        Our first dataset will consist of the 398 selected instances of the DEC-LIN track in the
PseudoBoolean Competition 2024 [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], which aim to be a representative sample of pseudo-boolean decision
problems. We evaluate the unmodified RoundingSAT solver (R-SAT) without the optional SoPlex
Linear Programming integration and without the hybrid mode suggested by Robert Nieuwenhuis et al.
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], as both actually reduce the number of instances solved for this specific dataset. Additionally, we
evaluate the counting method - which explicitly calculates the slack of each constraint - by disabling
watched propagation in RoundingSAT. Finally we present the best performing significance criteria
and “Standard Watched”, which uses a significance criterion declaring every literal to be significant for
all its constraints, in order to represent the traditional watched literal scheme with  = .
      </p>
      <p>
        Figure 1 demonstrates that the counting method is less eficient than the unit propagation by Devriendt
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], although faster than the naive way of implementing watched literals. We also observe that some
significance criteria already gain a small advantage over the existing RoundingSAT implementation on
the DEC-LIN instances. An extensive evaluation of diferent significance criteria on these instances is
given in appendix B.
      </p>
      <p>As shown in appendix A, the most successful criteria for DEC-LIN also perform well on the
OPTLIN track in the Pseudo Boolean Competition 2024, which comprises a collection of 487 optimization
problems. Here again, a small improvement compared to RoundingSAT can be observed.</p>
      <p>Across both datasets we notice that unit propagation with significant literals works best when it
is only applied to the input constraints and not to the learned constraints. Our explanation for this
behaviour is the diference in the distribution of coeficient sizes as shown in Figures 2 and 3.</p>
      <p>To produce Figure 2 we have collected all constraints in the selected instances of the DEC-LIN track,
which are not clauses or cardinality constraints and group all their coeficients by absolute values in
buckets. For Figure 3 we did the same for all learned constraints RoundingSAT on the dataset, but
excluded instances which are not solved within the 3600 timeout.</p>
      <p>We observe that coeficients in input constraints are far more unevenly distributed. Thus, 
can often be far smaller than 1, leading to a smaller and therefore less expensive watched literal set.
On learned constraints with a more even distribution,  remains similar to 1, thus the cost of
updating  outweighs the benefit of only marginally smaller watched literal sets.</p>
      <p>While significant literals already yield a small improvement on general instances, they are
substantially better if the instances mainly consist of constraints with large coeficients. One example are the
6 −111−01 − 1001
0.5
0
783 Knapsack instances submitted to the OPT-LIN track of the Pseudo Boolean Competition 2024, as
Figure 4 shows.</p>
      <p>The plot demonstrates that the two criteria clearly outperform the unmodified RoundingSAT solver,
both in the number of instances solved and the general runtime of hard instances.</p>
      <p>
        We further support this observation by looking at another application with large coeficient in the
benchmark dataset of the Pseudo Boolean Competition, the “Virtual Machine Consolidation” problem
[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The dataset includes 27 decision and 27 optimization problems submitted as benchmarks for the
Pseudo Boolean Competition 2015 and is thus significantly smaller than the other datasets. However
we can still observe in Figure 5, that the significance criteria, which performed best for the Knapsack
instances, also outperform the current RoundingSAT implementation here.
3,500
3,000
2,500
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>It has been successfully demonstrated how significant literals can speedup unit propagation for
pseudoboolean constraints. Especially for applications with a large average coeficient size we have observed a
substantial improvement compared to the current RoundingSAT watched propagation scheme.</p>
      <p>
        In addition, an avenue for future improvements is indicated by the observation that the performance
diferences between the watched literal schemes is mainly determined by the distribution of coeficients.
One possibility could be to select the significance criterion itself during the preprocessing step based on
the coeficients of the individual instance. Another improvement could be the adaptation of the logging
method developed by Robert Nieuwenhuis et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], which ensures that the search behavior of the
solver is completely independent of the exact unit propagation scheme chosen. This would make it
easier to identify small performance improvements from diferent significant literal definitions.
      </p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>
        This paper is based on the first author’s Master’s Thesis [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] supervised by the second author. The
authors would like to thank the anonymous reviewers of SAT 2025 and the Pragmatics of SAT 2025
Workshop for their careful reading and helpful suggestions.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Declaration on Generative AI</title>
      <p>The authors have not employed any Generative AI tools.</p>
    </sec>
    <sec id="sec-8">
      <title>A. Comparison with OPT-LIN Instances</title>
      <p>The comparison for the OPT-LIN track of the Pseudo-Boolean Competition 2024 is shown in figure 6.</p>
    </sec>
    <sec id="sec-9">
      <title>B. Comparison of diferent Significance Definitions</title>
      <p>In figures 7 through 12, we compare the runtime of diferent significance criteria on the DEC-LIN
instances of the Pseudo-Boolean Competition 2024.</p>
      <p>R-SAT (213)
 input ∧ 1 &gt; 100 (213)
 input ∧ 1 &gt; 500 (213)
 input ∧ .1 &gt; 5 · (.2 + .3) (212)
.1 &gt; 5 · (.2 + .3) (206)</p>
      <p>input (214)</p>
      <p>R-SAT
 input ∧  &gt; 1
 input ∧  &gt; 10
 input ∧  &gt; 50
 input ∧  &gt; 100
 input ∧  &gt; 500
0
180
185
190
0
230
235
240
245
250</p>
      <p>R-SAT
 input ∧ 1 &gt; 10
 input ∧ 1 &gt; 50
 input ∧ 1 &gt; 100
 input ∧ 1 &gt; 500
3,500
3,000
2,500
0
230
235
240
245
250
3,500
3,000
2,500
1,000</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D.</given-names>
            <surname>Chai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kuehlmann</surname>
          </string-name>
          ,
          <article-title>A fast pseudo-boolean constraint solver</article-title>
          ,
          <source>in: Proceedings of the 40th Annual Design Automation Conference</source>
          ,
          <source>DAC '03</source>
          ,
          <year>2003</year>
          , p.
          <fpage>830</fpage>
          -
          <lpage>835</lpage>
          . doi:
          <volume>10</volume>
          .1145/775832.776041.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Elfers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Nordström</surname>
          </string-name>
          ,
          <article-title>Divide and conquer: Towards faster pseudo-boolean solving</article-title>
          ,
          <source>in: International Joint Conference on Artificial Intelligence</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>H. M.</given-names>
            <surname>Sheini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. A.</given-names>
            <surname>Sakallah</surname>
          </string-name>
          ,
          <article-title>Pueblo: a modern pseudo-boolean sat solver</article-title>
          , in: Design, Automation and Test in Europe, volume
          <volume>2</volume>
          ,
          <year>2005</year>
          , pp.
          <fpage>684</fpage>
          -
          <lpage>685</lpage>
          . doi:
          <volume>10</volume>
          .1109/DATE.
          <year>2005</year>
          .
          <volume>246</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M. W.</given-names>
            <surname>Moskewicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. F.</given-names>
            <surname>Madigan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Malik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <article-title>Chaf: Engineering an Eficient SAT Solver</article-title>
          , in: Design Automation Conference,
          <year>2001</year>
          , pp.
          <fpage>530</fpage>
          -
          <lpage>535</lpage>
          . doi:
          <volume>10</volume>
          .1109/DAC.
          <year>2001</year>
          .
          <volume>935565</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F. A.</given-names>
            <surname>Aloul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ramani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. L.</given-names>
            <surname>Markov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. A.</given-names>
            <surname>Sakallah</surname>
          </string-name>
          ,
          <article-title>Generic ilp versus specialized 0-1 ilp: an update</article-title>
          ,
          <source>in: Proceedings of the 2002 IEEE/ACM International Conference on Computer-Aided Design (ICCAD '02)</source>
          , ACM, New York, NY, USA,
          <year>2002</year>
          , pp.
          <fpage>450</fpage>
          -
          <lpage>457</lpage>
          . doi:
          <volume>10</volume>
          .1145/774572.774638.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Devriendt</surname>
          </string-name>
          ,
          <article-title>Watched Propagation of 0-1 Integer Linear Constraints</article-title>
          ,
          <source>in: Principles and Practice of Constraint Programming</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>160</fpage>
          -
          <lpage>176</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Elfers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Devriendt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Gocht</surname>
          </string-name>
          , J. Nordström,
          <article-title>RoundingSat - the pseudo-boolean solver powered by proof complexity!</article-title>
          ,
          <year>2024</year>
          . URL: https://gitlab.com/MIAOresearch/software/roundingsat.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nieuwenhuis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Oliveras</surname>
          </string-name>
          , E. Rodríguez-Carbonell, R. Zhao,
          <article-title>Speeding up Pseudo-Boolean Propagation</article-title>
          ,
          <source>in: 27th International Conference on Theory and Applications of Satisfiability Testing (SAT</source>
          <year>2024</year>
          ), volume
          <volume>305</volume>
          <source>of Leibniz International Proceedings in Informatics (LIPIcs)</source>
          ,
          <year>2024</year>
          , pp.
          <volume>22</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>22</lpage>
          :
          <fpage>18</fpage>
          . doi:
          <volume>10</volume>
          .4230/LIPIcs.SAT.
          <year>2024</year>
          .
          <volume>22</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Müßig</surname>
          </string-name>
          ,
          <source>RoundingSAT with significant literals</source>
          ,
          <year>2025</year>
          . URL: https://gitlab2.cip.ifi.lmu.de/muessig/ roundingsat.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Gocht</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>McCreesh</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Nordström,</surname>
          </string-name>
          <article-title>VeriPB: the easy way to make your combinatorial search algorithm trustworthy, in: From Constraint Programming to Trustworthy AI</article-title>
          , workshop at the 26th
          <source>International Conference on Principles and Practice of Constraint Programming (CP '20)</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Pseudo-Boolean</surname>
            <given-names>Competition</given-names>
          </string-name>
          ,
          <source>Pseudo-Boolean Competition</source>
          <year>2024</year>
          ,
          <year>2024</year>
          . URL: https://www.cril. univ-artois.fr/PB24/, organized by Olivier Roussel,
          <string-name>
            <surname>CRIL</surname>
          </string-name>
          , Université d'Artois, France.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>B. C.</given-names>
            <surname>Ribas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. M.</given-names>
            <surname>Suguimoto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Montaño</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Silva</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Castilho, PBFVMC: A new pseudo-boolean formulation to virtual-machine consolidation</article-title>
          ,
          <source>in: 2013 Brazilian Conference on Intelligent Systems</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>201</fpage>
          -
          <lpage>206</lpage>
          . doi:
          <volume>10</volume>
          .1109/BRACIS.
          <year>2013</year>
          .
          <volume>41</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Müßig</surname>
          </string-name>
          ,
          <article-title>Investigating Watched Literal Schemes for Pseudo-Boolean Solvers, Master's thesis</article-title>
          ,
          <source>LMU Munich</source>
          ,
          <year>2025</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>