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
3
votes
1 answer

Wrong result from z3

I'm trying to proof the following with Z3 SMT Solver: ((x*x) + x) = ((~x * ~x) + ~x). This is correct, because of overflow semantic in the c programming language. Now I have written the following smt-lib code: (declare-fun a () Int) (define-fun…
Thomas
  • 31
  • 1
3
votes
2 answers

Make a constraint more difficult to solve for a constraint solver?

I am a newbie to SMT solving and I am writing to inquire some advice and pointers to understand what is a really difficult constraint for SMT solver to solve, for instance Z3. I tried to tweak the length of bit vectors, for instance in the following…
lllllllllllll
  • 8,519
  • 9
  • 45
  • 80
3
votes
1 answer

Tool to solve propositional logic / boolean expressions (SAT Solver?)

I am new to the topic of propositional logic and boolean expressions. So this is why I need help. Here is my problem: In the car industry you have thousand of different variants of components available to choose from when you buy a car. Not every…
3
votes
0 answers

Restricted boolean formulas for avoiding NP-completeness

I have boolean formulas A and B and want to check if "A -> B" (A implies B) is true in polynomial time. For fully general formulas A and B, this is NP-complete because ""A -> B" is true" is the same as "not (A -> B)" is not satisfiable. My goal is…
3
votes
2 answers

Converter from SAT to 3-SAT

Does anyone know of a good program to convert CNF files with any number of variables per clause to CNF files with exactly 3 variables per clause (3-CNF)? I've seen this algorithm in computer science books but can't find an implementation anywhere…
Elliot Gorokhovsky
  • 3,610
  • 2
  • 31
  • 56
3
votes
1 answer

minisat how to find all the SAT solutions efficiently

I found a way to finding all the solutions using the way described in this link. This is working fine, but it is slow. As it recalculates the constraints from the start i_e doesn't take advantage of the previous computations. Now, I saw in this …
3
votes
1 answer

How to run SAT calls in parallel using the picosat haskell bindings?

import Picosat import Control.Applicative main :: IO () main = do dimacsList1 <- (read <$> getLine) :: IO [[Integer]] dimacsList2 <- (read <$> getLine) :: IO [[Integer]] res1 <- solve dimacsList1 res2 <- solve dimacsList2 putStrLn $…
mrsteve
  • 4,082
  • 1
  • 26
  • 63
3
votes
1 answer

SAT solvers to determine features of multivariate functions?

The Boolean Satisfiabiity problem is a generalization for checking the satisfiability of a boolean expression. Now the boolean expression is generated by the nonnegativity algorithm of a polynomial. The polynomial could for example be and with…
hhh
  • 50,788
  • 62
  • 179
  • 282
3
votes
3 answers

How Max-SMT solvers do work?

SMT solvers are developed at deal with the satisfiability similar like SAT. As we know, SAT is also for satisfiability and variants of SAT are proposed. One of them is max-SAT. So I want to ask whether there exist max-SMT solvers and if it exists,…
user1393905
  • 121
  • 5
2
votes
1 answer

z3 solver using Sympy symbols

I'm trying to use Z3 to determine if an expression is satisfiable.I have created all equations that I want to use it as constraints using SymPy and the variables are Symbols. the equations for example "f1==(x -y >= 0 )" "f2 == (x_y >= 1)" "f3 == f1…
Sena j
  • 25
  • 5
2
votes
1 answer

What does a model mean in a universally quantified formula? Is it a function?

Consider these two formulae: Exists y. Forall x. (y>x), which is unsat. Forall x. Exists y. (y>x), which is sat. Note that we cannot find “models” for the sat formula, e.g., using Z3 it outputs Z3Exception: model is not available for the following…
Theo Deep
  • 666
  • 4
  • 15
2
votes
1 answer

Propositional logic

I have the following problem: I have two propositional formulas that must become logically equivalent. Only, one of them contains a 'variable', in the sense that the variable may be replaced by any propositional formula. The problem now, is that I…
TRX
  • 91
  • 1
  • 3
2
votes
1 answer

Special cases of SAT and corresponding #SAT with complexity a most O(n^2) AND that have efficient algorithms for generating instances?

I am interested in learning about special cases of boolean satisfiability problems that are known to be polynomial (or more realistically, O(N^2)). These cases should also have efficient algorithm for actually generating all satisfactory instances,…
2
votes
2 answers

How to bias Z3's (Python) SAT solving towards a criteria, such as 'preferring' to have more negated literals

In Z3 (Python) is there any way to 'bias' the SAT search towards a 'criteria'? A case example: I would like Z3 to obtain a model, but not any model: if possible, give me a model that has a great amount of negated literals. Thus, for instance, if we…
Theo Deep
  • 666
  • 4
  • 15
2
votes
1 answer

Calling Z3 as black box from Ocaml

I would like to get access to the quantifier elimination tactic of Z3 in Ocaml, in order to avoiding implementing all the validity and quantifier elimination methods I need. To do so, I would like to know how to call a Z3 API (for instance, Z3 from…