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
1
vote
2 answers

real world SAT instances

I'm designing and implementing a SAT solver. It would be particularly good if all clauses are of the form a AND b = c a OR b = c a XOR b = c a = NOT b In literature they use CNF form, which is I think would be a less efficient representation of the…
1
vote
1 answer

Weird error with syntax

Just experimenting with smtlib. I'm not seeing whats wrong with the following... (set-logic BV) (declare-fun var1 () (_ BitVec 32)) ; a is a constant (declare-fun var2 () (_ BitVec 32)) ; a is a constant (declare-fun var3 () (_ BitVec 32)) ; a is a…
user982975
  • 11
  • 2
1
vote
2 answers

GSAT incompleteness example

The GSAT (Greedy Satisfiability) algorithm can be used to find a solution to a search problem encoded in CNF. I'm aware that since GSAT is greedy, it is incomplete (which means there would be cases where a solution might exist, but GSAT cannot find…
sarora
  • 499
  • 5
  • 20
1
vote
1 answer

Verify Combinatorial CNF SAT Encodings?

I am trying to solve a combinatorial problem by using a SAT Solver. This involves the following steps: Encode the problem as set of boolean expressions. Translate a conjunction of the expressions into CNF/DIMACS (using home grown tools, bc2cnf,…
Axel Kemper
  • 10,544
  • 2
  • 31
  • 54
1
vote
3 answers

SAT Solving for Optimization

Suppose you have a CNF formula with some variables marked special. Is there a way to make a SAT Solver (say, minisat) find a solution maximizing the number of special variables assigned to true?
0
votes
2 answers

SAT can be verified in polynomial time, by a conversion to CNF, then verifying the SAT of the CNF in polynomial. What is wrong with this argument?

we know that any expression can be converted to a CNF in linear time where the CNF result is not 'logically equivalent' to the original expression but the 'satisfiability' is invariant meaning that the CNF is satisfiable if and only if the original…
0
votes
1 answer

How can I perform validity of ∃∀.φ, if I use quantifier elimination for ∀.φ and get φ'? I hypothetise ∃φ' solves satisfiability, not validity

I want to check validity of a formula with the following quantifier alternation: ∃∀.φ Do I check validity of this formula if I solve Exists(exist_vars, ForAll(forall_vars, Phi)) in Z3Py? What is the difference between checking validity and…
Theo Deep
  • 666
  • 4
  • 15
0
votes
2 answers

Specifying modular arithmetic conditions in Z3

How do I specify a modular artithmetic condition such as f1 := (b[0]*2^0 + b[1]*2^1 + b[2]*2^2 + b[3]*2^3 + b[4]*2^4 ≡ 1 (mod 5)) ∨ (b[0]*2^0 + b[1]*2^1 + b[2]*2^2 + b[3]*2^3 + b[4]*2^4 ≡ 2 (mod 5)) ∨ (b[0]*2^0 + b[1]*2^1 + b[2]*2^2 +…
vvg
  • 1,010
  • 7
  • 25
0
votes
2 answers

Example of unique 3sat solution

I am searching for 3sat problems having unique solution. Till now, I only found one site https://www.cs.ubc.ca/~hoos/SATLIB/benchm.html There are good examples of 3sat instance on that site but the problem is they have more than 1 solution if it's…
user
  • 33
  • 11
0
votes
1 answer

In Z3, I cannot understand result of quantifier elimination of Exists y. Forall x. (x>=2) => ((y>1) /\ (y<=x))

In Z3-Py, I am performing quantifier elimination (QE) over the following formulae: Exists y. Forall x. (x>=2) => ((y>1) /\ (y<=x)) Forall x. Exists y. (x>=2) => ((y>1) /\ (y<=x)), where both x and y are Integers. I did QE in the following way: x,…
Theo Deep
  • 666
  • 4
  • 15
0
votes
0 answers

Wcnf dimacs how to get the value with highest weight

Let's say i have this problem and wanted to solve it using dimacs and maxsat solvers There's 10 police patrols and i want solver to pick the best police patrol to go to intervention, each patrol is described by 3 variables (status, distance,…
0
votes
0 answers

Solve multiple SAT problem at the same time

I want to solve multiple SAT problem at the same time, how can I apply this in C++ (with the SOTA SAT solver like minisat, CMS etc.) I found there is a likely implementation in this github issue. However, I want to apply this in C++, any suggestion?…
0
votes
1 answer

How can I specify a function in Minizinc that returns True if a boolean array contains at least one True element, and False otherwise?

The problem In a Minizinc model where I want to minimize a linear cost function, I can say the following: set of int: foos = 1..8; set of int: bars = 1..5; array[foos] of float: cost; array[foos, bars] of var bool: assignment; solve minimize…
0
votes
1 answer

Derivation in the Resolution Proof System

The clauses of our problem: {x,y},{x,z},{y,z},{¬x,¬y},{¬x,¬z},{¬y,¬z} How can we conclude from these clauses to {}? I can see that this cannot be satisfied, but I am unable to find a solution in the Resolution Proof System as it seems that…
NightOwl
  • 3
  • 2
0
votes
1 answer

Dimacs cnf expression not satisfiable, why?

I am a new cs student and I have a hard time understanding satisfiability fully. I have made 2 expressions for a SAT solver. Seperately, they are satisfiable, but together they're not. I don't understand it, because i actually thought they meant the…