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

Z3 FiniteDomain doesn't seem to work with implications

Here's a Z3 program, that creates two variables X and Y which cannot be equal, and have a domain of size 2: var solver = ctx.MkSolver(); // Section A var T = ctx.MkFiniteDomainSort("T", 2); var a = ctx.MkNumeral(0, T); var b = ctx.MkNumeral(1,…
1
vote
1 answer

Negation predicate not/2 for SAT Solver in Prolog

I'm writing a SAT Solver in Prolog. Here's what I've been able to come up so far: cst(true). cst(false). is_true(cst(true)). is_false(cst(false)). and(A,B) :- is_true(A), is_true(B). or(A,B) :- is_true(A), is_false(B). or(A,B)…
Haise Sasaki
  • 319
  • 3
  • 9
1
vote
1 answer

Optimize event seat assignments with Corona restrictions

Problem: Given a set of group registrations, each for a varying number of people (1-7), and a set of seating groups (immutable, at least 2m apart) varying from 1-4 seats, I'd like to find the optimal assignment of people groups to seating…
1
vote
1 answer

How to get the time taken for Clairvoyant restart?

I am trying to get the time taken for Clairvoyant restart to occur in SCIP7.0.0, in order to compare the speed with another numerical method. In event_estim.c, I have modified line 2792 to become SCIPverbMessage(scip, SCIP_VERBLEVEL_HIGH, NULL,…
1
vote
1 answer

Is it possible to create consecutive OR statements using Z3 expr_vectors?

I'm trying to create a constraint such that a value X is one of the members of the expr_vector such as, context c; expr_vector v(c); expr x = c.int_const("x"); expr i1 = c.int_val(5); expr i2 = c.int_val(7); solver s(c); s.add(x == i1 || x == i2);…
1
vote
0 answers

How to model conditional summation (like sumif in Excel) in CP-SAT?

I am trying to model a variant of Job Shop problem in CP-SAT. In this problem, the machines have capacities >=1 so I can NOT directly use AddNoOverlap constraint from CP-SAT. The decision variables are START and FINISH times of job operations on…
1
vote
1 answer

Is there an incremental Max-SMT solver?

I'm working with a problem over Bit-Vector arrays encoding logical relationships between different time series data at different timescales to generate synthetic data with arbitrary properties. I have found that I do best by incrementally providing…
lightning
  • 389
  • 1
  • 9
1
vote
1 answer

What is the main reason to forget clauses within a Boolean Formula when using in the CDCL algorithm solving for SAT?

The Conflict Drive Clause Learning algorithm utilizes a backtracking component which is based on the 'learning' of new clauses (derived upon reaching a conflict during the search process for a truth assignment that satisfies a Boolean formula).…
1
vote
0 answers

Reduce SAT <=p Independent Set

I am a bit confused. I know how to reduce 3-SAT to IS. An example of transforming 3-SAT to IS graph would be create a graph representing each clause of the 3-SAT and then joining the x and !x and then submitting it to IS. How would we apply this to…
lazycamper
  • 107
  • 1
  • 8
1
vote
1 answer

Linear Sat Unsat vs Linear Unsat Sat

I know both the above algorithm come under iterative solutions to find an optimum for MAXSAT problems but I was wondering why is it that starting from the Satisfiable side while finding a solution for MAXSAT better than searching for it from the…
1
vote
2 answers

Print all solutions of the N-Queens problem using a SAT solver

I'm doing a project were I have to create a program who solves the N queens problem using a SAT solver. I have already transformed the constraints into conjunctive normal form and I'm now writing the code for the DIMACS file. I however have a…
1
vote
1 answer

How does SCIP choose which branching rule to use?

My datasets consist of large SAT instances. I am trying to find out how SCIP's default settings selects the branching rule to use. There is a dataset that I have which consists of 7295 variables and 409834 constraints. After setting the time limit…
1
vote
1 answer

Is it possible to write a presolved problem into a file?

I would like to write a presolved problem into a file. Is there any way to do it? write problem does not do it for me, it gives me the original problem that I read with SCIP. The context is that I am working on SAT problems. The presolving phase of…
1
vote
1 answer

Unsat core in Minisat

Is there any API call in minisat to extract unsat core or any other method for the same. I want to extract the unsat core for every invocation of the solver and then work on the unsat core.
lava_07
  • 83
  • 1
  • 7
1
vote
0 answers

Solving SAT problems using minisat

I've been trying to solve SAT instances using minisat APIs but for some reason minisat is very slow when it comes to printing out the result. I am pretty sure that I am doing something wrong in the API calls as I've implemented sat solvers myself…
lava_07
  • 83
  • 1
  • 7