Questions tagged [satisfiability]

Satisfiability (often written in all capitals or abbreviated SAT) 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.

Mainly from Wikipedia:

In computer science, the Boolean Satisfiability Problem (sometimes called Propositional Satisfiability Problem and abbreviated as satisfiability or SAT) is the problem of determining if there exists an interpretation that satisfies a given Boolean formula.

In other words, it asks whether the variables of a given Boolean formula can be consistently replaced by the values true or false in such a way that the formula evaluates to true.

If this is the case, the formula is called satisfiable. On the other hand, if no such assignment exists, the function expressed by the formula is identically false for all possible variable assignments and the formula is unsatisfiable.

For example, the formula "*a AND NOT b*" is satisfiable 
because one can find the values a = TRUE and b = FALSE, 
which make (a AND NOT b) = TRUE. 

In contrast, (a AND NOT a) is unsatisfiable.

SAT is one of the first problems that was proven to be NP-complete. This means that all problems in the complexity class NP, which includes a wide range of natural decision and optimization problems, are in a technical sense equally difficult to solve as SAT.

There is no known algorithm that efficiently solves SAT, and it is generally believed that no such algorithm exists; yet this belief has not been proven mathematically, and resolving the question whether SAT has an efficient algorithm is equivalent to the P versus NP problem, which is the most famous open problem in the theory of computing.

Despite the fact that no algorithms are known that solve SAT efficiently, correctly, and for all possible input instances, many instances of SAT that occur in practice (such as in artificial intelligence, circuit design and automatic theorem proving) can actually be solved rather efficiently using heuristical SAT-solvers.

Such algorithms are not believed to be efficient on all SAT instances, but experimentally these algorithms tend to work well for many practical applications.

Nowadays, the research on the SAT theory continues, if you want to keep up to date with this research, feel free to visit : http://www.satlive.org/.

119 questions
21
votes
2 answers

Can a SAT solver be used to find all solutions?

I wrote an answer to what I thought was a quite interesting question, but unfortunately the question was deleted by its author before I could post. I'm reposting a summary of the question and my answer here in case it might be of use to anyone…
Vectornaut
  • 473
  • 5
  • 11
13
votes
2 answers

SAT solving with haskell SBV library: how to generate a predicate from a parsed string?

I want to parse a String that depicts a propositional formula and then find all models of the propositional formula with a SAT solver. Now I can parse a propositional formula with the hatt package; see the testParse function below. I can also run a…
mrsteve
  • 4,082
  • 1
  • 26
  • 63
11
votes
4 answers

Divide people into teams for most satisfaction

Just a curiosity question. Remember when in class groupwork the professor would divide people up into groups of a certain number (n)? Some of my professors would take a list of n people one wants to work with and n people one doesn't want to work…
Jon W
  • 15,480
  • 6
  • 37
  • 47
9
votes
1 answer

Is minimization of boolean expressions NP-Complete?

I know that boolean satisfiability is NP-Complete, but is the minimization/simplification of a boolean expression, by which I mean taking a given expression in symbolic form and producing an equivalent but simplified expression in symbolic form,…
9
votes
1 answer

What's the advantage of SMT-solver over CSP-solver in constraint solving?

SMT-Solver can be used for constraint solving. As we known, CSP solvers are also for constraint solving for many years. So what's the advantage of SMT-solver over CSP solvers?
user1393905
  • 121
  • 5
6
votes
2 answers

How to generate a random propositional formula (CNF) in haskell?

How can I get a random propositional formula in haskell? Preferably I need the formula in CNF, but I would I want to use the formulas for performance testing that also involves SAT solvers. Please note that my goal is not to test the performance of…
mrsteve
  • 4,082
  • 1
  • 26
  • 63
6
votes
1 answer

Convert Boolean FlatZinc to CNF DIMACS

To solve a set of Boolean equations, I am experimenting with the Constraint-Programming Solver MiniZinc using the following input: % Solve system of Brent's equations modulo 2 % Matrix dimensions int: aRows = 3; int: aCols = 3; int: bCols =…
Axel Kemper
  • 10,544
  • 2
  • 31
  • 54
6
votes
1 answer

Boolean satisfiability - algorithm

I have a boolean formula: (x_{1} or x_{2}) and (x_{3} or x_{4}) and ..... and (x_{2r-1} or x_{2r}), where x_{i} belongs to the set: {p_{1}, p_{2}, ... p_{99} , ~p_{1}, ~p_{2}, ... ~p_{99} } and I have to determine if for some values of x_{i} given…
xan
  • 1,053
  • 1
  • 10
  • 29
5
votes
1 answer

SAT/CNF optimization

Problem I'm looking at a special subset of SAT optimization problem. For those not familiar with SAT and related topics, here's the related Wikipedia article. TRUE=(a OR b OR c OR d) AND (a OR f) AND ... There are no NOTs and it's in conjunctive…
Simon
  • 1,814
  • 20
  • 37
5
votes
1 answer

Compilers that translate verification algorithms into SAT problems

The proof that SAT is NP-complete is a constructive proof, so it should be possible to implement it as a program. Has anyone done this? I'm looking for a program (a compiler), that takes as input a program (which returns true or false) and outputs a…
user82928
  • 877
  • 7
  • 16
5
votes
2 answers

Haskell: binding to fast and simple SAT solver

Today I wanted too look into options on SAT solving in haskell. First I tought about writing my own interface to the picosat solver. Then I found out there is the SBV library. It's interfaces to Z3, Yices, CVC4 and Boolector. Also, I did a google…
mrsteve
  • 4,082
  • 1
  • 26
  • 63
4
votes
2 answers

Difference between C-SAT and SAT?

What exactly is the difference between these two NP-complete problems? It seems to me that they are both asking if a boolean formula can be satisfied (i.e. output 1) but one is in the context of a circuit and the other just a formula. However…
4
votes
1 answer

SBV lib seems to slow for SAT-solving, how to use picosat/miniSAT?

In my last question I asked how I can parse an propositional expression and then find all models of the formula with the help of the SBV library. I used the hatt library to parse the boolean expression. Unfortunately, the SBV seems like it is either…
mrsteve
  • 4,082
  • 1
  • 26
  • 63
4
votes
2 answers

Checking satisfiability of expression tree

I'm trying to look for a practical way (e.g. in terms of engineering effort) of solving a problem, where I have a bunch of unknown values: val a: Int32 = ??? val c: Int32 = ??? val d: Bool = ??? and a expression binary-tree (in memory), that…
4
votes
1 answer

smallest independent set

Given a set s of formula, I want to find a smallest subset s' of s that implies every formula in s. I call s the smallest independent set because for every pair a,b in s' , a does not imply b and vice versa. It seems to me the naive approach…
Vu Nguyen
  • 987
  • 1
  • 9
  • 20
1
2 3 4 5 6 7 8