LINGELING and Friends Entering the SAT Challenge 2012

Compared to the version submitted to the SAT competition 2011 and described in [1], we removed complicated algorithms and features, which did not really have any observable impact on the run-time for those benchmarks we tried. In particular, various versions of distillation inprocessors were removed. Regarding inprocessing [4], there are two new probing variants. One is called simple probing and tries to learn hyper binary resolutions eagerly. The other variant is based on tree-based look-ahead, which is a simplified version of the implementation in March [2]. These two techniques are complemented by gaussian elimination and a new congruence closure algorithm, which both use extracted gates to generate and propagate equivalences. We also switched to one merged inprocessing phase, called simplification, where all inprocessors run one after each other, instead of allowing each inprocessor to be scheduled and interleaved with search individually. Furthermore, for most inprocessors we have now a way to save the part of the formula on which the inprocessor did not run until completion (actually currently only “untried variables”). In the next simplification phase, the algorithm can be resumed on that part, such that eventually we achieve the same effect as really running the various algorithms until completion. Previously we used randomization to achieve a similar effect. This technique also allowed us to remove certain limits, such as the maximum number of occurrences or the maximum resolvent size in variable elimination. We moved to an inner-outer scheme for the size of kept learned clauses, also called reduce schedule. The inner scheme follows the previously implemented LBD resp. glue based scheme as in Glucose. As in the previous version the solver might switch to activities dynamically, if the glue distribution is skewed. The outer schedule is Luby controlled and resets the learned clause data based limit to its initial size. This idea is particularly useful for crafted instances. Another new feature is to occasionally use the opposite of the saved phase for picking the value for the decision variable. These flipping intervals start at the top-level and while flipping is enabled the phases of assigned variables are not saved (as in probing) in order not to counteract the effect of the phase saving mechanism. The exponential VSIDS scheme of MiniSAT has been replaced by a new variant of a variable-move-to-front strategy with multiple queues ordered by priority. This seems to be at least as effective as the previous scheme, but updating and querying the queue turns out to be substantially faster. In general we simplified internal data structures with the hope to make the code a little bit more accessible.