Questions tagged [sat]

In computer science, the Boolean Satisfiability Problem (or SAT) is the problem of determining if there exists an interpretation that satisfies a given boolean formula.

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/.

289 questions
4
votes
1 answer

ORTools SAT alternative to CS IntVar[].Element(IntExpr index) to cost reciprocal assignments

I'm trying to assign costs if there is a "reciprocal" assignment in an IntVar[]. Here's how I've accomplished it in the older ConstraintSolver... IntVar[] assignments = solver.MakeIntVarArray(size, 0, size-1, "assignments"); var cost =…
Ed MacDonald
  • 406
  • 4
  • 7
4
votes
1 answer

What is the difference between SAT and linear programming

I have an optimization problem that is subjected to linear constraints. How to know which method is better for modelling and solving the problem. I am generally asking about solving a problem as a satisfiability problem (SAT or SMT) vs. Solving as a…
Rehab11
  • 483
  • 2
  • 7
  • 16
4
votes
1 answer

How can 3-SAT be reduced to Independent set?

I was reading about NP hardness from here (pages 8, 9) and in the notes the author reduces a problem in 3-SAT form to a graph that can be used to solve the maximum independent set problem. In the example, the author converts the following 3-SAT…
Arat254
  • 449
  • 2
  • 5
  • 17
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
3 answers

Simplifying CNF formula while preserving all solutions wrt certain variables

Related: CNF simplification (in fact, I think the submitter of that question might have been after what I want here) A number of tools exist for simplifying (or "preprocessing" before solving) DIMACS format CNF formulas, and most SAT solvers…
Sami Liedes
  • 1,084
  • 8
  • 19
3
votes
1 answer

Efficient way to do n-ary branch / tabulated functions?

I'm trying to get some basic information on the performance characteristics of branches in SBV. Let's suppose I have an SInt16 and a very sparse lookup table Map Int16 a. I can implement the lookup with nested ite: sCase :: (Mergeable a) => SInt16…
Cactus
  • 27,075
  • 9
  • 69
  • 149
3
votes
1 answer

What is the exact meaning of NumConflicts in CP-Sat?

I wonder what the solver.Response.NumConflicts information means exactly. In the documentation(s) I found statements like Returns the number of conflicts since the creation of the…
3
votes
3 answers

Reducing Graph Reachability to SAT (CNF)

So I came across this problem in my textbook. I was wondering how to develop a reduction from the Graph Reachability problem to SAT (CNF) problem. (i.e. formula is satisfiable iff there exists a path in graph G from start to end node) 1) I can't…
csGeek
  • 53
  • 4
3
votes
1 answer

Is there way to give input as normal expression to Z3 Solver?

The Z3 input format is an extension of the one defined by SMT-LIB 2.0 standard. The input expressions need to write in prefix form. As for example rise4fun, x + (y * 2) = 20 needs to be given input in the form of " (= (+ x (* 2 y)) 20)) ". Z3…
Rituraj Singh
  • 579
  • 1
  • 5
  • 16
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
1 answer

CLP(B) weighted sat_count/3 in Prolog

For the CLP(B) library of SWI-Prolog, I want to implement a weighted version of sat_count/2 sat_count(Sat0, N) :- catch((parse_sat(Sat0, Sat), sat_bdd(Sat, BDD), sat_roots(Sat, Roots), …
GinoC
  • 442
  • 4
  • 16
3
votes
1 answer

What are the semantics of non-decision variables in MiniSat?

When using MiniSat as C++ library, every new variable can be created as either a decision var or a non-decision var. My rough understanding of this is that when the solver decides on which variable to use next during branching, non-decision vars are…
Xarn
  • 3,460
  • 1
  • 21
  • 43
3
votes
1 answer

Creating a Groebner Basis SAT Solver in Prolog

I am trying to create a SAT solver which converts from Conjunctive Normal Form (CNF) with an implementation of Boolean Grobner Bases: a) Negation of a particular variable, e.g. -x will be converted to 1+x. b) Adding the same variable will results…
piyo_kuro
  • 105
  • 9
3
votes
0 answers

Why does the name of a signature impact the number of variables?

Using Alloy 4.2, the following Alloy model... sig E {} sig G {} sig D extends G { x: E } sig F1 extends G { x: G } sig F2 extends G { x: G } sig F3 extends G { x: G } sig F4 extends G { x: G } run {} for 3 ... executes with the following…
jacquev6
  • 620
  • 4
  • 18
3
votes
0 answers

Internal representation of Enumeration Types in NuSMV/NuXMV

why is there a significant performance dropdown when representing a 16-bit signed integer variable as an intervall (-32768..32767) in comparison to fixed length bit arrays? Inspecting the pre-processed NuSMV/NuXMV model one can observe that the…
optional
  • 2,504
  • 4
  • 18
  • 30
1
2
3
19 20