Boolean satisfiability problem
![]() | This article includes a list of general references, but it lacks sufficient corresponding inline citations. (December 2010) |
Satisfiability is the problem of determining if the variables of a given Boolean formula can be assigned in such a way as to make the formula evaluate to TRUE. Equally important is to determine whether no such assignments exist, which would imply that the function expressed by the formula is identically FALSE for all possible variable assignments. In this latter case, we would say that the function is unsatisfiable; otherwise it is satisfiable. To emphasize the binary nature of this problem, it is frequently referred to as Boolean or propositional satisfiability. The shorthand "SAT" is also commonly used to denote it, with the implicit understanding that the function and its variables are all binary-valued.
Basic definitions, terminology and applications
In complexity theory, the satisfiability problem (SAT) is a decision problem, whose instance is a Boolean expression written using only AND, OR, NOT, variables, and parentheses. The question is: given the expression, is there some assignment of TRUE and FALSE values to the variables that will make the entire expression true? A formula of propositional logic is said to be satisfiable if logical values can be assigned to its variables in a way that makes the formula true. The Boolean satisfiability problem is NP-complete. The propositional satisfiability problem (PSAT), which decides whether a given propositional formula is satisfiable, is of central importance in various areas of computer science, including theoretical computer science, algorithmics, artificial intelligence, hardware design, electronic design automation, and verification.
A literal is either a variable or the negation of a variable (the negation of an expression can be reduced to negated variables by De Morgan's laws). For example, is a positive literal and is a negative literal.
A clause is a disjunction of literals. For example, is a clause (read as "x-sub-one or not x-sub-2").
There are several special cases of the Boolean satisfiability problem in which the formulae are required to be conjunctions of clauses (i.e. formulae in conjunctive normal form). Determining the satisfiability of a formula in conjunctive normal form where each clause is limited to at most three literals is NP-complete; this problem is called "3SAT", "3CNFSAT", or "3-satisfiability". Determining the satisfiability of a formula in which each clause is limited to at most two literals is NL-complete; this problem is called "2SAT". Determining the satisfiability of a formula in which each clause is a Horn clause (i.e. it contains at most one positive literal) is P-complete; this problem is called Horn-satisfiability.
The Cook–Levin theorem states that the Boolean satisfiability problem is NP-complete, and in fact, this was the first decision problem proved to be NP-complete. However, beyond this theoretical significance, efficient and scalable algorithms for SAT that were developed over the last decade have contributed to dramatic advances in our ability to automatically solve problem instances involving tens of thousands of variables and millions of constraints. Examples of such problems in electronic design automation (EDA) include formal equivalence checking, model checking, formal verification of pipelined microprocessors, automatic test pattern generation, routing of FPGAs, and so on. A SAT-solving engine is now considered to be an essential component in the EDA toolbox.
Complexity and restricted versions
NP-completeness
SAT was the first known NP-complete problem, as proved by Stephen Cook in 1971 (see Cook's theorem for the proof). Until that time, the concept of an NP-complete problem did not even exist. The problem remains NP-complete even if all expressions are written in conjunctive normal form with 3 variables per clause (3-CNF), yielding the 3SAT problem. This means the expression has the form:
- (x11 OR x12 OR x13) AND
- (x21 OR x22 OR x23) AND
- (x31 OR x32 OR x33) AND ...
where each x is a variable or a negation of a variable, and each variable can appear multiple times in the expression.
A useful property of Cook's reduction is that it preserves the number of accepting answers. For example, if a graph has 17 valid 3-colorings, the SAT formula produced by the reduction will have 17 satisfying assignments.
NP-completeness only refers to the run-time of the worst case instances. Many of the instances that occur in practical applications can be solved much more quickly. See runtime behavior below.
SAT is easier if the formulas are restricted to those in disjunctive normal form, that is, they are disjunction (OR) of terms, where each term is a conjunction (AND) of literals (possibly negated variables). Such a formula is indeed satisfiable if and only if at least one of its terms is satisfiable, and a term is satisfiable if and only if it does not contain both x and NOT x for some variable x. This can be checked in polynomial time.
2-satisfiability
SAT is also easier if the number of literals in a clause is limited to 2, in which case the problem is called 2SAT. This problem can also be solved in polynomial time, and in fact is complete for the class NL. Similarly, if we limit the number of literals per clause to 2 and change the AND operations to XOR operations, the result is exclusive-or 2-satisfiability, a problem complete for SL = L.
One of the most important restrictions of SAT is HORNSAT, where the formula is a conjunction of Horn clauses. This problem is solved by the polynomial-time Horn-satisfiability algorithm, and is in fact P-complete. It can be seen as P's version of the Boolean satisfiability problem.
Provided that the complexity classes P and NP are not equal, none of these restrictions are NP-complete, unlike SAT. The assumption that P and NP are not equal is currently not proven.
3-satisfiability
3-satisfiability is a special case of k-satisfiability (k-SAT) or simply satisfiability (SAT), when each clause contains exactly k = 3 literals. It was one of Karp's 21 NP-complete problems.
Here is an example, where ¬ indicates negation:
E has two clauses (denoted by parentheses), four variables (x1, x2, x3, x4), and k=3 (three literals per clause).
To solve this instance of the decision problem we must determine whether there is a truth value (TRUE or FALSE) we can assign to each of the literals (x1 through x4) such that the entire expression is TRUE. In this instance, there is such an assignment (x1 = TRUE, x2 = TRUE, x3=TRUE, x4=TRUE), so the answer to this instance is YES. This is one of many possible assignments, with for instance, any set of assignments including x1 = TRUE being sufficient. If there were no such assignment(s), the answer would be NO.
Algorithm Approach
// #define VAR(x) ((x) << 1) // #define NOT(x) ((x) ^ 1) // void visit(int v, const graph &g, // vector<int> &ord, vector<int> &num, int k) { // if (num[v] >= 0) return; // num[v] = k; // for (int i = 0; i < g[v].size(); ++i) // visit(g[v][i].dst, g, ord, num, k); // ord.push_back(v); // } // typedef pair<int,int> clause; // bool two_satisfiability(int m, const vector<clause> &cs) { // int n = m * 2; // m positive vars and m negative vars // graph g(n), h(n); // for (int i = 0; i < cs.size(); ++i) { // int u = cs[i].first, v = cs[i].second; // g[NOT(u)].push_back( edge(NOT(u), v) ); // g[NOT(v)].push_back( edge(NOT(v), u) ); // h[v].push_back( edge(v, NOT(u)) ); // h[u].push_back( edge(u, NOT(v)) ); // } // vector<int> num(n, -1), ord, dro; // for (int i = 0; i < n; ++i) // visit(i, g, ord, num, i); // reverse(ord.begin(), ord.end()); // fill(num.begin(), num.end(), -1); // for (int i = 0; i < n; ++i) // visit(ord[i], h, dro, num, i); // for (int i = 0; i < n; ++i) // if (num[i] == num[NOT(i)]) // return false; // return true; // } [1]
3-SAT is NP-complete and it is used as a starting point for proving that other problems are also NP-hard. This is done by polynomial-time reduction from 3-SAT to the other problem. An example of a problem where this method has been used is the Clique problem. 3-SAT can be further restricted to One-in-three 3SAT, where we ask if exactly one of the variables in each clause is true, rather than at least one. This restriction remains NP-complete.
There is a simple randomized algorithm due to Schöning (1999) that runs in time where n is the number of clauses and succeeds with high probability to correctly decide 3-Sat. The exponential time hypothesis is that no algorithm can solve 3-Sat in time .
Horn-satisfiability
A clause is Horn if it contains at most one positive literal. Such clauses are of interest because they are able to express implication of one variable from a set of other variables. Indeed, one such clause can be rewritten as , that is, if are all true, then y needs to be true as well.
The problem of deciding whether a set of Horn clauses is satisfiable is in P. This problem can indeed be solved by a single step of the Unit propagation, which produces the single minimal (w.r.t. the set of literal assigned to true) model of the set of Horn clauses.
A generalization of the class of Horn formulae is that of renamable-Horn formulae, which is the set of formulae that can be placed in Horn form by replacing some variables with their respective negation. Checking the existence of such a replacement can be done in linear time; therefore, the satisfiability of such formulae is in P as it can be solved by first performing this replacement and then checking the satisfiability of the resulting Horn formula.
XOR-satisfiability
Another special case are problems where each clause only contains exclusive or operators. Because the exclusive or operation is equivalent to addition on a Galois field of size 2 (see also modular arithmetic), the clauses can be viewed as a system of linear equations and corresponding methods such as Gaussian elimination can be used to find the solution.
Schaefer's dichotomy theorem
The restrictions above (CNF, 2CNF, 3CNF, Horn) bound the considered formulae to be conjunction of subformulae; each restriction states a specific form for all subformulae: for example, only binary clauses can be subformulae in 2CNF.
Schaefer's dichotomy theorem states that, for any restriction to Boolean operators that can be used to form these subformulae, the corresponding satisfiability problem is in P or NP-complete. The membership in P of the satisfiability of 2CNF and Horn formulae are special cases of this theorem.
Runtime behavior
As mentioned briefly above, though the problem is NP-complete, many practical instances can be solved much more quickly. Many practical problems are actually "easy", so the SAT solver can easily find a solution, or prove that none exists, relatively quickly, even though the instance has thousands of variables and tens of thousands of constraints. Other much smaller problems exhibit run-times that are exponential in the problem size, and rapidly become impractical. Unfortunately, there is no reliable way to tell the difficulty of the problem without trying it. Therefore, almost all SAT solvers include time-outs, so they will terminate even if they cannot find a solution. Finally, different SAT solvers will find different instances easy or hard, and some excel at proving unsatisfiability, and others at finding solutions. All of these behaviors can be seen in the SAT solving contests.[1]
Extensions of SAT
An extension that has gained significant popularity since 2003 is Satisfiability modulo theories (SMT) that can enrich CNF formulas with linear constraints, arrays, all-different constraints, uninterpreted functions, etc. Such extensions typically remain NP-complete, but very efficient solvers are now available that can handle many such kinds of constraints.
The satisfiability problem becomes more difficult (PSPACE-complete) if we extend our logic to include second-order Booleans, allowing quantifiers such as "for all" and "there exists" that bind the Boolean variables. An example of such an expression would be:
SAT itself uses only quantifiers. If we allow only quantifiers, it becomes the Co-NP-complete tautology problem. If we allow both, the problem is called the quantified Boolean formula problem (QBF), which can be shown to be PSPACE-complete. It is widely believed that PSPACE-complete problems are strictly harder than any problem in NP, although this has not yet been proved.
A number of variants deal with the number of variable assignments making the formula true. Ordinary SAT asks if there is at least one such assignment. MAJSAT, which asks if the majority of all assignments make the formula true, is complete for PP, a probabilistic class. The problem of how many variable assignments satisfy a formula, not a decision problem, is in #P. UNIQUE-SAT or USAT is the problem of determining whether a formula known to have either zero or one satisfying assignments has zero or has one. Although this problem seems easier, it has been shown that if there is a practical (randomized polynomial-time) algorithm to solve this problem, then all problems in NP can be solved just as easily.
The maximum satisfiability problem, an FNP generalization of SAT, asks for the maximum number of clauses which can be satisfied by any assignment. It has efficient approximation algorithms, but is NP-hard to solve exactly. Worse still, it is APX-complete, meaning there is no polynomial-time approximation scheme (PTAS) for this problem unless P=NP.
NP-Complete Solutions in SAT
Theorem (Karp-Lipton-Sipser): If NP ⊆ P/poly then PH = Σp2.
Note if NP ⊆ P/poly then SAT has a polynomial-size circuit family.
Namely, for some c > 0 there is a sequence of circuits W1,W2,W3,..., where Wn is a circuit of size nk deciding satisfiability of all Boolean formulas whose encoding size is ≤ n.
Of course, NP ⊆ P/poly merely implies the existence of such a family; there may be no easy way to construct the circuits.
Lemma (Self-reducibility of SAT)
There is a polynomial-time computable function h such that if {Wn}n≥1 is a circuit family that solves SAT, then for all Boolean formula ϕ:ϕ ∈ SAT iff h (ϕ, W|ϕ|) is a satisfying assignment for ϕ. (1)
Proof: The main idea is to use the circuit to generate a satisfying assignment as follows.
Ask the circuit if ϕ is satisfiable.
If so, ask it if ϕ(x1 = T) (i.e., ϕ with the first variable assigned True) is satisfiable.
The circuit’s answer allows us to reduce the size of the formula. If the circuit says no, we can conclude ϕ(x1 = F) is true, and have thus reduced the number of variables by 1. If the circuit says yes, we can substitute x1 = T and again reduced the number of variables by 1.
Continuing this way, we can generate a satisfying assignment. This proves the Lemma. (Aside: The formal name for the above property of SAT is downward self-reducibility. All NP-complete languages have this property.)QED
Now we prove the Theorem.
We show NP ⊆ P/poly implies Πp2 ⊆ Σp2. Let L ∈ Πp2. Then there is a language L1 ∈ NP and c > 0 such that L = {x ∈ {0, 1}∗: ∀ y, |y|≤|x|c, (x, y) ∈ L1}. (2)
Since L1 ∈ NP, there is a polynomial-time reduction, say g, from L1 to SAT.
Thus ∀ z ∈ {0,1}∗: z ∈ L1 iff g(z) ∈ SAT.
Suppose further that d > 0 is such that |g(z)|≤|z|d.
Now we can rewrite (2) asL = {x ∈ {0,1}∗: ∀ y,|y|≤|x|c1, g(x, y) ∈ SAT}.
Note that |g(x, y)| ≤ (|x| + |y|)d.
Let us simplify this as |x|cd.
Thus if Wn≥1 is a nk-sized circuit family for SAT, then by 1) we have L = {x : ∀ y,|y|≤|x|c1, h(g(x, y), W|x|cd ) is a satisfying assignment for g(x, y)}.
Now we are almost done.
Even though there may be no way for us to construct the circuit for SAT, we can just try to “guess” it.
Namely, an input x is in L iff ∃W, a circuit with |x|cd inputs and size |x|cdk such that ∀ y, |y|≤|x|c1, h(g(x, y), W) is a satisfying assignment for g(x, y).
Since h is computable in polynomial time, we have thus shown L ∈ Σp2. QED1 [2]
Algorithms for solving SAT
There are two classes of high-performance algorithms for solving instances of SAT in practice: modern variants of the DPLL algorithm, such as Chaff, GRASP or march; and stochastic local search algorithms, such as WalkSAT.
A DPLL SAT solver employs a systematic backtracking search procedure to explore the (exponentially-sized) space of variable assignments looking for satisfying assignments. The basic search procedure was proposed in two seminal papers in the early 60s (see references below) and is now commonly referred to as the Davis-Putnam-Logemann-Loveland algorithm (“DPLL” or “DLL”). Theoretically, exponential lower bounds have been proved for the DPLL family of algorithms.
Modern SAT solvers (developed in the last ten years) come in two flavors: "conflict-driven" and "look-ahead". Conflict-driven solvers augment the basic DPLL search algorithm with efficient conflict analysis, clause learning, non-chronological backtracking (aka backjumping), as well as "two-watched-literals" unit propagation, adaptive branching, and random restarts. These "extras" to the basic systematic search have been empirically shown to be essential for handling the large SAT instances that arise in Electronic Design Automation (EDA). Look-ahead solvers have especially strengthened reductions (going beyond unit-clause propagation) and the heuristics, and they are generally stronger than conflict-driven solvers on hard instances (while conflict-driven solvers can be much better on large instances which actually have an easy instance inside).
Modern SAT solvers are also having significant impact on the fields of software verification, constraint solving in artificial intelligence, and operations research, among others. Powerful solvers are readily available as free and open source software. In particular, the conflict-driven MiniSAT, which was relatively successful at the 2005 SAT competition, only has about 600 lines of code. An example for look-ahead solvers is march_dl, which won a prize at the 2007 SAT competition.
Genetic algorithms and other general-purpose stochastic local search methods are also being used to solve SAT problems, especially when there is no or limited knowledge of the specific structure of the problem instances to be solved. Certain types of large random satisfiable instances of SAT can be solved by survey propagation (SP). Particularly in hardware design and verification applications, satisfiability and other logical properties of a given propositional formula are sometimes decided based on a representation of the formula as a binary decision diagram (BDD).
Propositional satisfiability has various generalisations, including satisfiability for quantified Boolean formula problem, for first- and second-order logic, constraint satisfaction problems, 0-1 integer programming, and maximum satisfiability problem.
Many other decision problems, such as graph coloring problems, planning problems, and scheduling problems, can be easily encoded into SAT.
See also
Notes
- ^ "The international SAT Competitions web page". Retrieved 2007-11-15.
References
References are ordered by date of publication:
- Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1145/321033.321034, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1145/321033.321034
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1145/368273.368557, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1145/368273.368557
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1145/800157.805047, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1145/800157.805047
instead. - Michael R. Garey and David S. Johnson (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. W.H. Freeman. ISBN 0-7167-1045-5. A9.1: LO1 – LO7, pp. 259 – 260.
- Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1109/12.769433, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1109/12.769433
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1109/DATE.1999.761110, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1109/DATE.1999.761110
instead. - R. E. Bryant, S. M. German, and M. N. Velev, Microprocessor Verification Using Efficient Decision Procedures for a Logic of Equality with Uninterpreted Functions, in Analytic Tableaux and Related Methods, pp. 1–13, 1999.
- Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1109/SFFCS.1999.814612, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1109/SFFCS.1999.814612
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1145/378239.379017, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1145/378239.379017
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1023/A:1011276507260, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1023/A:1011276507260
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1109/TCAD.2002.1004311, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1109/TCAD.2002.1004311
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1007/b95238, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1007/b95238
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1109/TC.2006.175, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1109/TC.2006.175
instead. - Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1109/BIMNICS.2007.4610083, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1109/BIMNICS.2007.4610083
instead.
External links
More information on SAT:
SAT Applications:
- WinSAT v2.04: A Windows-based SAT application made particularly for researchers.
SAT Solvers:
- Chaff
- HyperSAT
- Spear
- The MiniSAT Solver
- UBCSAT
- Sat4j
- RSat
- Fast SAT Solver - simple but fast implementation of SAT solver based on genetic algorithms
- CVC3
Conferences/Publications:
- SAT 2009: Twelfth International Conference on Theory and Applications of Satisfiability Testing
- SAT 2008: Eleventh International Conference on Theory and Applications of Satisfiability Testing
- SAT 2007: Tenth International Conference on Theory and Applications of Satisfiability Testing
- Journal on Satisfiability, Boolean Modeling and Computation
- Survey Propagation
Benchmarks:
- Forced Satisfiable SAT Benchmarks
- IBM Formal Verification SAT Benchmarks
- SATLIB
- Software Verification Benchmarks
- Fadi Aloul SAT Benchmarks
SAT solving in general:
Evaluation of SAT solvers:
This article includes material from a column in the ACM SIGDA e-newsletter by Prof. Karem Sakallah
Original text is available here