Talk:Boolean satisfiability problem

From Wikipedia, the free encyclopedia
Jump to: navigation, search
          This article is of interest to the following WikiProjects:
WikiProject Computing (Rated C-class)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
C-Class article C  This article has been rated as C-Class on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.
Note icon
This article has been automatically rated by a bot or other tool because one or more other projects use this class. Please ensure the assessment is correct before removing the |auto= parameter.
WikiProject Computer science (Rated C-class, Mid-importance)
WikiProject icon This article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
C-Class article C  This article has been rated as C-Class on the project's quality scale.
 Mid  This article has been rated as Mid-importance on the project's importance scale.
WikiProject Mathematics (Rated C-class, Mid-priority)
WikiProject Mathematics
This article is within the scope of WikiProject Mathematics, a collaborative effort to improve the coverage of Mathematics on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Mathematics rating:
C Class
Mid Priority
 Field: Discrete mathematics

Typo in "Extensions of SAT"[edit]

I noticed a typo in this section. Shouldn't it be UNAMBIGUOUS-SAT instead of UNAMBIGOUS-SAT?

KevinGoedecke (talk) 10:52, 11 August 2015 (UTC)


Because of their length, the previous discussions on this page have been archived. If further archiving is needed, see Wikipedia:How to archive a talk page.

Previous discussions:

Needs Discussion of Location of Hard SAT Problems[edit]

There is interesting work on the distribution of hard SAT problems, which seems like it should be discussed here. I don't have time to add it now, but here is a link to the seminal paper: Polytrope (talk) 17:11, 9 March 2011 (UTC)

Why No Discussion on XOR-SAT?[edit]

It would be great to add some discussion on XOR-SAT —Preceding unsigned comment added by (talk) 23:45, 10 August 2010 (UTC) There is a "hidden" reason every discussion is deleted: there is no constructive formula from OR-SAT in polynomial space able to represent a XOR-SAT. That contradicts the theorem of Cook which expects how the configuration would be. I would recommend you my own links, but I am sure this will be deleted too. — Preceding unsigned comment added by Juan Manuel Dato (talkcontribs) 14:19, 12 October 2012 (UTC)

Combine this Page with "Satisfiability and validity"[edit]

This page addresses the same topic, but in more detail. Suggest merging "Satisfiability and validity" into this by making it the introduction.

Proper Abbreviation Syntax[edit]

Is the proper syntax for abbreviating 3-Satisfiability "3SAT" or "3-SAT" (hyphen or no hyphen)? The page seems inconsistent with regards to this.

Sdoroudi (talk) 05:52, 1 June 2008 (UTC)

I've seen paper titles using 3-SAT,[1][2] 3SAT,[3] and even 3Sat.[4] In short, there is little agreement among researchers on this. Dcoetzee 08:55, 1 June 2008 (UTC)
That said, is there anyway to standardize the article (we can put in somewhere an "also abbreviated as" or something like that, the first time the abbreviations are mentioned). I don't much care which we go for, it would just be nice if the article is standardized. (talk) 16:52, 1 June 2008 (UTC)
Sorry forgot to sign Sdoroudi (talk) 16:52, 1 June 2008 (UTC)


Why does the Satisfiability page redirect to this article? Someone not interested in computational complexity theory might be interested merely in a simple definition of satisfiability for propositional and predicate logic. Nortexoid 05:21, 23 May 2006 (UTC)

Please feel free to turn that redirect into an article with these definitions. - Liberatore(T) 10:50, 23 May 2006 (UTC)


This page seems to be rather redundant and poorly organized to me (I'm quite familiar with the SAT problem). Or maybe I'm just drunk right now... 07:18, 12 July 2006 (UTC)

As an expert on Satisfiability, I agree that the page would benefit from some reorganisation and revisions targeted to improving clarity and accuracy of the information provided. I may have time to do this myself in a while, but perhaps the problems have been resolved by then ... Hh 00:20, 27 November 2006 (UTC)

k-SAT: At most k literals or exactly k literals?[edit]

There is disagreement between this article and the CNF article on the number of literals in each clause of a k-CNF formula. From Conjunctive Normal Form:

The k-SAT problem is the problem of finding a satisfying assignment to a boolean formula expressed in CNF such that each disjunction contains at most k variables.

From 3-SAT:

3-satisfiability is a special case of k-satisfiability (k-SAT) or simply satisfiability (SAT), when each clause contains exactly k = 3 literals.

Which is it? Should we choose one definition over the other, or should we provide both definitions to the reader? Moreover, must literals in each clause be unique? If yes, then this belongs in the article. Quaternion (talk) 03:08, 7 December 2007 (UTC)

It's very easy to convert between forms. CRGreathouse (t | c) 02:22, 10 March 2011 (UTC)


The problem of factorizing a number can be reduced to boolean satisfiablity. Essentially, we build a network of logic gates that perform a multiplication of two sets of inputs A[0..n] and B[0..n] (taken to be binary numbers A and B) and give a set of outputs C[0..n]. Each C is then expressed as a boolean function of the inputs A and B - admittedly, a pretty big one, but finite. We then specify a number by asserting or denying C. Thus, to find the factors of 10 we would assert C[3] & ~C[2] & C[1] & ~C[0]. We also assert that neither A nor B is 1. If we then can satisfy this in polynomial time, the solution for A[0..n] wil be a factor of C. —Preceding unsigned comment added by (talk) 05:50, 12 December 2007 (UTC)


This article is in direct contradiction with 2-SAT, which states:

2-satisfiability (abbreviated as 2-SAT) is a special case of satisfiability if expressions are written in conjunctive normal form with 2 variables per clause (2-CNF).

whereas this article insists on DNF! Can someone please fix? linas (talk) 17:39, 31 March 2008 (UTC)

As I said at Talk:2-satisfiability, it is not a contradiction. Sat in disjunctive normal form is trivial: each term gives a satisfying assignment. Sat in conjunctive normal form is, in general, hard, but 2-sat is an easier (though not as trivial as DNF) special case. —David Eppstein (talk) 17:52, 31 March 2008 (UTC)
The paragraph discussing SAT for DNF expressions just seems to be under the wrong section heading. I've moved it, which I think resolves the issue. Quaternion (talk) 17:57, 31 March 2008 (UTC)

Literals versus Variables[edit]

The description of the example for 3-Satisfiability includes the following sentence:

E has two clauses (denoted by parentheses), four literals (x1, x2, x3, x4), and k=3 (three literals per clause).

but in the example, there is also the literal not(x2) and not(x3). As far as I know, a literal is a variable or the negation of a variable in propositional logic, and a term or the negation of a term in predicate logic. Therefore, it should read "... four variables (x1, x2, x3, x4) ..." or "... five literals (x1, x2, not(x2), not(x3), x4) ...". The distinction between literals and variables (or atoms in predicate logic) is an important one, and this example description is confusing for newcomers to logic.

If you all agree, I will change the description, or somebody else, who is positive, might do. —Preceding unsigned comment added by (talk) 17:09, 26 February 2009 (UTC)

Literals vs. Variables[edit]

I agree with you, this may be confusing to newcomers, I think it is better to say "literals formed with variables" or better "literals formed with atom names" atoms should be enough but "atom names" may be more informative to newcomers. Also I think this notation is better:

where each is a literal, i.e. a proposition variable or its negation

But the one given in the article shows better in the screen. I tried \mathcal{l} to display a calligraphic l, to avoid confusion with number one or capital i, but did not worked. Anyway this is a superfluous change in notation as the other is readable to anyone, but distinction between variables and literals should be clear and informative to newcomers as remarked by the previous user. —Preceding unsigned comment added by Elias (talkcontribs) 22:15, 6 June 2009 (UTC)

Vacuous lead[edit]

Judging by the lead there seems to be no problem. Shouldn't the lead give at least a hint as to what the problem is? Wikipedia expects an article's lead to summarize the article. The concept of Boolean satisfiability on its own is a triviality. --Vaughan Pratt (talk) 06:33, 19 March 2011 (UTC)

I added a paragraph. Did it help? (talk) 01:47, 20 March 2011 (UTC)
Reading through the article, the whole thing (while containing good material) badly needs reorganization and rewriting. I'll see if I can mess with it in coming days/weeks/whatever, but expert help would be much appreciated. (talk) 02:11, 20 March 2011 (UTC)

random SAT[edit]

We should add something about it. This looks useful. (talk) 01:32, 20 March 2011 (UTC)

Preserving paragraph deleted from Boolean satisfiability problem#Exactly-1 3-satisfiability[edit]

I just deleted the following paragraph, putting it here in case I terribly misunderstood something:

(Context, kept:)

Another reduction involves only four new variables and three clauses: Rx,a,b) ∧ R(b,y,c) ∧ R(c,dz).


To prove that must exist, one first express as product of maxterms, then show that

The left side is evaluated true if and only if the right hand side is one-in-three 3SAT satisfied. The other variables are newly added variables that don't exist in any other expression.

(Context, kept:)

The one-in-three 3SAT problem is often used in the literature as a known NP-complete problem in a reduction to show that other problems are NP-complete.[citation needed]

My reasons for deleting:

  • When proving that 3-SAT can be reduced to 1-in-3-SAT, the existence of R is assumed; there is no need to prove it.
  • The equation is wrong: e.g. for x=y=z=FALSE and a=TRUE, the lhs and the rhs evaluates to FALSE and TRUE, respectively.
  • I cannot see how the existence of R would follow from the equation.

Jochen Burghardt (talk) 18:30, 20 September 2013 (UTC)

How does the relation sol(1-in-3-sat) => sol(xor3sat) => sol(3-sat) imply cubic time for 3-sat?[edit]

The article states:

 As a consequence, for each CNF formula, either the 3-SAT problem or the 1-in-3-SAT problem can be decided in cubic time.

A 3-CNF formula F3 consists of clauses Ci, i = (1, 2, ..., |F3|) with literals lij, j = (1, 2, 3). Depending on the logical function R applied to the literals of each clause, different versions of 3-satisfiability problems are defined.

The function R1(li1, li2, li3) becomes true, when exactly one literal of a clause becomes true. R1 defines the 1-in-3-SAT problem for F3.

The function Rx(li1, li2, li3) becomes true, when the expression li1li2li3 becomes true. Rx defines the XOR3SAT problem for F3.

The function R3(li1, li2, li3) becomes true, when at least one literal lij of a clause becomes true. R3 defines the regular 3-SAT problem.

The following truth table shows, that any satisfying assignment for 1-in-3-SAT is necessarily a satisfying assignment for XOR3SAT. Also, any satisfying assignment for XOR3SAT is necessarily a satisfying assignment for regular 3-SAT:

li1 li2 li3 1-in-3-SAT XOR3SAT 3-SAT
0 0 0 0 0 0
0 0 1 1 1 1
0 1 0 1 1 1
0 1 1 0 0 1
1 0 0 1 1 1
1 0 1 0 0 1
1 1 0 0 0 1
1 1 1 0 1 1

Wolfmanx (talk) 15:36, 25 November 2013 (UTC)

Concerning your 1st post, I think, you may have confused "decided" and "solved". My justification for the above cited sentence from the article is as follows: Given a CNF formula f, run the xor-3-SAT algorithm, which takes at most cubic time.
  • If its result is "unsolvable", then the 1-in-3-SAT can't have a solution either, i.e. f has been decided to be 1-in-3-SAT unsolvable.
  • If it returns a solution, then this is also a solution for the (ordinary) 3-SAT problem, i.e. f has been decided to be 3-SAT solvable.
I admit that the notions of 1-in-3-SAT, xor-3-SAT, and 3-SAT are confusing, and the presentation in the article is not optimal. I guess I tried to explain the same as you did using your p,q,r table (for one clause) when I introduced the picture (for two clauses) in section Boolean_satisfiability_problem#XOR-satisfiability, viz. "sol(1-in-3-sat) => sol(xor3sat) => sol(3-sat)". - Jochen Burghardt (talk) 17:42, 25 November 2013 (UTC)
Well, that's the reason why I posted in the first place: I was confused about the meaning of "decided" :)
I had to translate the statement to truth tables, ending up with the conclusion (in your words, emphasised additions by me):
  • If its result is "unsolvable", then the 1-in-3-SAT can't have a solution either, i.e. f has been decided to be 1-in-3-SAT unsolvable, but nothing is decided about the 3-SAT problem.
  • If it returns a solution, then this is also a solution for the (ordinary) 3-SAT problem, i.e. f has been decided to be 3-SAT solvable, but nothing is decided about the 1-in-3-SAT problem, if the solution requires any clause to have exactly 3 literals to be true.
This basically boils down to the sermon I wrote above about being lucky, etc. but your wording is definitely better.
Wolfmanx (talk) 12:08, 26 November 2013 (UTC)
I made some changes along the lines of this discussion, and I hope they are ok. However, I didn't understand what you meant by "negated XOR3SAT ... translated into a constraint ..." and the text thereafter (why should one want to translate "an XOR3SAT problem into a general 3-SAT CNF problem"?; what is the role of DNFs; what do you mean by "mapping a DNF"?). - Jochen Burghardt (talk) 10:37, 4 December 2013 (UTC)
I got carried away. Let's stay on the relation between 1-in-3-SAT, XOR3SAT and 3-SAT. I have condensed the description, so that the truth-table does show how the solution spaces are related. Wolfmanx (talk) 12:58, 16 December 2013 (UTC)
Converning your 2nd post, I admit that the article is not sufficiently explicit about the different operators in a CNF formula. It should better define the notion of a "generalized conjunctive normal form formula", viz. as a conjunction of arbitrarily many "generalized clauses", the latter being of the form R(l1,l2,l3) for some fixed ternary boolean operator R and (oridinary) literals li. This form is used in the picture in section Boolean_satisfiability_problem#Exactly-1 3-satisfiability, but is never explicitly defined. This way, the problem of composing a ternary 1-of-3 operator from binary operators is avoided. Your truth table from your 1st post could be used to explain the different R operators for 1-in-3-SAT, xor-3-SAT, and (ordinary) 3-SAT. In fact, each of the three rightmost columns shows how the corresponding value R(p,q,r) should be defined, depending on the value of p, q, and r. Do you think that could make it more clear?
The picture you find misleading is that of section Boolean_satisfiability_problem#XOR-satisfiability, I guess? I intended just to give a visualization of your relation "sol(1-in-3-sat) => sol(xor3sat) => sol(3-sat)", seen as inclusion of solution sets: "yellow ⊆ blue ⊆ green" is all it should say - nothing about polynomial-time problem mappings and such stuff. - Jochen Burghardt (talk) 18:14, 25 November 2013 (UTC)
I certainly like your idea of the "generalized conjunctive normal form formula", since decomposition into truth tables is my own personal way to resolve my own confusion. However, I cannot speak for the general population.
I am aware of the functional operator notation, and use X1(l0, l1, l2) myself. I realize that I probably should have used it in the first place, instead of making up my own illustrative notation. I really must give up that habit :)
Yes, that is the picture I mean. It took me a while to figure out that it was about the "Distribution of Solutions for SAT problems", or as you say: "yellow ⊆ blue ⊆ green", and not about "Hardness of SAT problems". Granted that I could have read the description earlier, I still think a caption would help to avoid the confusion in the first place. I have colored the truth table to match the colors of the figure, so the meaning would become clear from the correlation.
Wolfmanx (talk) 12:08, 26 November 2013 (UTC)
Do you have a suggestion to improve the caption? I always have problems writing good captions... - Jochen Burghardt (talk) 10:37, 4 December 2013 (UTC)
I think together with the truth-table it would be clear. I am not so good with concise phrases. It took this long discussion to come up with the condensed version above ... Wolfmanx (talk)

Capitalization of "Boolean satisfiability problem" ?[edit]

The article mostly, but not always capitalizes the word "Boolean".

What is the reason to write "Boolean satisfibility problem" instead of "boolean satisfiability problem"?

I guess "boolean" could be considered like other adjectives like symmetric or digital. Am I wrong? (talk) 13:33, 3 March 2014 (UTC)

Exponential time hypothesis[edit]

In section Boolean satisfiability problem#3-satisfiability, on 13:50, 1 December 2010, Ylloh added the sentence:

The exponential time hypothesis is that no algorithm can solve 3-Sat in time .

E.g. on 12:32, 19 January 2014 (I didn't check the history in between), the sentence read:

The exponential time hypothesis is that no algorithm can solve 3-SAT faster than o(exp(n)).

On 18:15, 24 July 2014, changed it to:

The exponential time hypothesis is that no algorithm can solve 3-SAT faster than exp(o(n)).

but I reverted it (see below for my thoughts). On 13:50, 6 October 2014,‎ Ylloh changed it back to his original version (which I wasn't aware of up to now):

The exponential time hypothesis asserts that no algorithm can solve 3-SAT in time exp(o(n)).

So I see a need to discuss:

  1. "faster than" vs. "in time", and
  2. "exp(o(n))" vs. "o(exp(n))", and maybe
  3. whether to stick with the definition at exponential time hypothesis#Definition, which seems to amount to "every algorithm solving 3-SAT needs time O(2δn) for some δ>0", or, simpler, "O(cn) for some c>1".

As for 2., I still think that o should be the outermost operation, since it returns a set of functions; if exp is defined at all on the set o(n), it is defined elementwise, i.e. exp(o(n)) evaluates to o(exp(n)), unless I'm terribly wrong. As for 1., I admit that, different to what I thought until yesterday, "faster than" may be too sharp; I'm confused by the unusual (to me) o instead of O. For the latter reason, I'd like to suggest to use the O(cn) version from 3. - Jochen Burghardt (talk) 14:25, 6 October 2014 (UTC)

Sorry, I wasn't aware of this edit conflict. exp(o(n)) is the correct term that should appear here, and o(exp(n)) is actually wrong: Note that the function 2^n is contained in o(exp(n))=o(e^n), but this is not what the exponential time hypothesis is about. Also cf. the article exponential time hypothesis. ylloh (talk) 15:40, 7 October 2014 (UTC)
Also note that the non-uniform version of the definition that is stated in exponential time hypothesis is usually just written as exp(o(n)) when the topic is discussed less formally. ylloh (talk)

Probably, your version (was and) is the right one, and the edit conflict was my fault. However, I still didn't fully understand your explanation: why is o(exp(n)) different from exp(o(n)), and why is the former term wrong? What is the definition of exp applied to a set of functions, viz. o(n)? - The article exponential time hypothesis#Definition primarily uses the big-O definition from Impagliazzo.Paturi.1999 (p.368), and then says that some sources use a slightly weaker notion, based on the little-o term 2o(n). I don't understand why that is weaker, but shouldn't we stick with the commonly used big-O definition? And: could you also comment on "faster than" vs. "in time"? - Jochen Burghardt (talk) 13:00, 9 October 2014 (UTC)

External links modified[edit]

Hello fellow Wikipedians,

I have just modified one external link on Boolean satisfiability problem. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at {{Sourcecheck}}).

Question? Archived sources still need to be checked

Cheers.—cyberbot IITalk to my owner:Online 14:08, 7 April 2016 (UTC)