Understanding and improving a modern SAT solver

Propositional satisfiability (SAT) is an NP-complete problem, holding a central place in computer science and engineering. SAT has numerous applications in formal verification, artificial intelligence and other areas. Modern SAT solvers, using an enhanced version of the backtrack search DavisLogemann-Loveland (DLL) algorithm, are able to successfully cope with instances comprising millions of variables. This work is an attempt to shed new light on the functionality of a modern SAT solver. We also propose a number of enhancements that are empirically useful, especially in the formal verification domain. We propose a framework for presenting and analyzing a modern DLLbased SAT solver. We provide a basic backtracking algorithm that explicitly shows the process of resolution refutation construction. Our approach is based on the notion of a parent resolution derivation – a resolution proof for validness of a flip operation. We show how to derive the algorithm of a modern SAT solver from basic backtracking step-by-step. This resolution-based approach allows us to define new criteria for measuring the practical impact of different schemes for conflict-driven learning by making the notion of search pruning more formal. We show that the 1UIP scheme, enhanced by conflict clause minimization, is better than other known schemes in terms of pruning. This explains its empirical advantage over other schemes. We propose an enhancement to the minimized 1UIP scheme, called local conflict clause recording. This technique improves the performance of a modern SAT solver by recording additional conflict clauses. Local conflict clause recording makes the learning less dependent on the variable polarity selection heuristic. Assignment stack shrinking is a technique whose goal is to shrink the size of the assignment stack and conflict clauses. We demonstrate the empirical usefulness of assignment stack shrinking and analyze its impact on the performance of a modern SAT solver, comparing it to the impact of conflict clause minimization and rapid restarts. Furthermore, a new decision heuristic for SAT, called the clause-based heuristic, is introduced. This heuristic is designed to increase the likelihood that interrelated variables will be chosen in proximity. It maintains a clause list containing both the initial and conflict clauses. The next decision literal is picked from the first unsatisfied clause. We propose various methods for initially organizing the clause list and for moving clauses within it. Our approach results in a significant performance boost over existing heuristics tested on hard real-world industrial benchmarks. Finally, we present an algorithm for minimal unsatisfiable core extraction that is able to find a minimal unsatisfiable core for large real-world formulas. Benchmark families, arising in formal verification of hardware, are of particular interest to us. Modern SAT solvers are able to produce a resolution refutation of a given unsatisfiable formula, whose sources are the input clauses and whose sink is the empty clause. Our method’s basic version removes the input clauses connected to the empty clause one by one from the resolution refutation, preserving the validity of the refutation by adding other clauses and resolution relations until no more input clauses can be removed. In the end, all the input clauses, connected to the empty clause, comprise the minimal unsatisfiable core.