Adding Unsafe Constraints to Improve SAT Solver Performance

John Franco



We examine the structure of CNF representations of common problems,

such as bounded model checking, in Formal Verification. We observe that

this structure arises in a variety of other difficult problems as well. We

show why such structures are difficult for current Satisfiability solvers:

namely, that inferences typically can be discovered only after a large

number of variables have been set. Thus, for example, clause learning

is not as effective on such structures as we would like it to be. We

propose some ideas which may lead to significantly reduced solution times for

these and other problems. These have have to do with guessing

inferences apriori BASED ON SOLUTION STRUCTURE and not formula structure

as is typically done in preprocessing. That is, the structure of solutions

that can be found for smaller versions of a problem are examined for

necessary patterns of variable values - either to support or reject the solutions -

and constraints are added to the original formula to enforce inclusion

or rejection of these patterns. Adding guessed constraints can reduce

search enormously but may eliminate some solution traces, so at some search

depth these guessed constraints are removed and search continues to the end.

The trick is to prevent all solutions from being lost if at least one

exists. For Formal Verification problems this means, at worst, getting

a result with a certain confidence. Some other problems can be solved

more directly. For example, this idea was used to find a van der Waerden

number W(2,6) = 1132 by first getting a bound then using solution patterns to

reduce a full search to something manageable. We are still refining

this technique.