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
1
vote
1 answer

Clarification on terms used in SCIP 'display problem' and 'write statistics' commands

I have read in some .cnf files using SCIP and I am confused about the terms used. I am unable to find these terms in any SCIP documentation either. 1) When 'display problem' is typed after reading in a .cnf file, I see the following: Problem…
1
vote
1 answer

Atleast K out of N encoding in SAT solvers

I know that given an at most k out of N tool I can get an at least K out of N by changing it to at most (n-k) out of N. But I can't seem to wrap my head around how this is true. I might be missing something very trivial For example, if K=2 and N=6…
lava_07
  • 83
  • 1
  • 7
1
vote
1 answer

Adding constrains on integer bits in Z3

I have an integer constant, lets say: expr x = ctx.int_const("x"); What I'm trying to do is apply random constraints on the individual bits of x. However, it turns out you cannot use bit-wise operations with integer sorts, only bit-vectors. My…
squirem
  • 227
  • 1
  • 11
1
vote
1 answer

Why is MAX-SAT a generalisation of the SAT problem?

According to Wikipedia, the maximum satisfiability problem (MAX-SAT) is the problem of determining the maximum number of clauses, of a given Boolean formula in conjunctive normal form, that can be made true by an assignment of truth values to the…
1
vote
0 answers

OR-Tools - Categorizing by minimization with CP-SAT

I use Google OR-Tools (CP-SAT solver) to solve a constraint problem. I need to place people in categories, hence, I create the following model: model = cp_model.CpModel() matches = {} for p in people: for c in categories: #…
Antoine C.
  • 3,730
  • 5
  • 32
  • 56
1
vote
1 answer

How to make z3 generate proof of unsatisfiability?

I am trying to use z3 from the command line as a SAT solver, but I can't figure out how to make it generate a proof of unsatisfiability. No matter what I do, it just prints "unsat" with no explanation, and nothing I can find online has helped. I…
Antimony
  • 37,781
  • 10
  • 100
  • 107
1
vote
0 answers

Have Z3 prioritize certain Boolean variables when branching/searching for a model

I have a large SAT/SMT formula ranging over two (disjoint) sets of variables: a relatively small set X of Boolean variables (< 1000) and a much larger set Y of Boolean (and perhaps Integer/Real) variables. My formula is such that the values of the…
Dan
  • 1,539
  • 12
  • 23
1
vote
1 answer

How to use SCIP to solve SAT problems?

I am trying to use SCIP to solve a SAT problem. My company uses a Linux command line by Mobaxterm. I have the SCIPoptsuite 6.0.2 installed. I'm unable to find any information online on how to call SCIP to solve SAT problems, both in English and…
1
vote
1 answer

3 Coloring a given graph to a boolean expression in a Mini-Sat format

I'm working on a project where I have to read a file representing a graph. I made the input file looks like this: b c a c d a b b So each line signifies a node. For eg, the first line is node a which is connected to b and c and the second…
1
vote
1 answer

Encode admissible sets in Z3Py

Based on the argumentation framework theory, I'm trying to encode the admissible sets using the Z3Py prover. However, I have run into some problems and would appreciate any pointers on how to improve it. Based on the definition from Wikipedia, a…
szczocik
  • 1,293
  • 1
  • 8
  • 18
1
vote
1 answer

Determining when two boolean functions are equivalent?

Problem Given two boolean functions f1(a,b) and f2(a,b,c) with a,b and c booleans, I'd like to know if there exists a value of c such that for any combinations of a et b f1(a,b)=f2(a,b,c). For example if f1(a,b)=a AND b and f2(a,b,c)=a AND b AND c,…
f1f2
  • 23
  • 3
1
vote
1 answer

How to debug conda SAT solver pruning Python options to zero?

I'm observing a conda install ... failure in which the conda SAT solver is pruning my options for python to zero: {snip} DEBUG conda.resolve:filter_group(400): scipy: pruned from 391 -> 127 DEBUG conda.resolve:filter_group(400): python: pruned from…
dbanas
  • 1,707
  • 14
  • 24
1
vote
1 answer

Speed up formula building in Z3Py

I use Z3Py to build large formulas (~1500 Bool variables, ~90k assertions) and I am currently using Solver.add to add the assertions, which are mostly small (eg. implications on 2 variables). My code looks something like this, with about 10 outer…
1
vote
0 answers

I am running an experiment using Sugar (a SAT-based Constraint Solver)

I am using Sugar (a SAT-based Constraint Solver) to run an experiment, for each new experiment I increase the size of the sugar file, which means that the percent of CPU and memory usage should increase. However, the CPU percentage is lower for…
1
vote
0 answers

Combinatorial constraint satisfaction and optimization

Problem I created a set of polygons based on bag of plane intersection. Now I try to create the following manifold by combinatorial optimization. Manifold constraint each edge in the final model should be incident to two polygons. Optimize weight…