As with unit propagation, resolution also lifts fairly easily to a pseudo-Boolean setting. The general computation is as follows:
Proof. This is immediate. Multiply (23) by , multiply
(24) by
, add and simplify using
.
If all of the weights, and
are 1, this generalizes
conventional resolution provided that the sets of nonresolving
literals in
and
are disjoint. To deal with the case where
there is overlap between the set of
and the set of
, we
need:
Proof. If is a literal with
, then both
and the
rewrite are true if
is satisfied. If
, then
and
the rewrite are equivalent.
In other words, we can reduce any coefficient that is greater than
what is required to satisfy the clause in its entirety, for example
rewriting
Proof. We have already discussed the case where the sets of and
are disjoint. If there is a literal
in
that is the
negation of a literal in
, then we will have
in
(25), which we can simplify to 1 to make the resolved
constraint trivial; resolution produces the same result. If there is
a literal
in
that also appears in
, the coefficient of
that literal in the resolvent (25) will be 2 but can be
reduced to 1 by virtue of the lemma.
Cardinality constraints are a bit more interesting. Suppose that
we are resolving the two clauses
One possibility is to rewrite (26) as a pair of cardinality
constraints