Questions tagged [dpll]

Davis–Putnam–Logemann–Loveland (DPLL) is an algorithm introduced by Martin Davis, George Logemann and Donald W. Loveland in 1962. It was sometimes referred as the "Davis–Putnam method" or the "DP algorithm".

DPLL or Davis–Putnam–Logemann–Loveland is a Algorithm introduced by Martin Davis, George Logemann and Donald W. Loveland in 1962 to solve Boolean satisfiability problems (CNF-SAT).

References:

Wikipedia

23 questions
25
votes
2 answers

Using the Logic Monad in Haskell

Recently, I implemented a naïve DPLL Sat Solver in Haskell, adapted from John Harrison's Handbook of Practical Logic and Automated Reasoning. DPLL is a variety of backtrack search, so I want to experiment with using the Logic monad from Oleg…
Matt W-D
  • 1,535
  • 2
  • 18
  • 22
6
votes
2 answers

Parse To Prolog Variables Using DCG

I want to parse a logical expression using DCG in Prolog. The logical terms are represented as lists e.g. ['x','&&','y'] for x ∧ y the result should be the parse tree and(X,Y) (were X and Y are unassigned Prolog variables). I implemented it and…
jules
  • 1,795
  • 2
  • 14
  • 18
6
votes
1 answer

Interpretation of Z3 Statistics

I obtained several statistics from runs of Z3. I need to understand what these mean. I am rather rusty and non up to date for the recent developments of sat and SMT solving, for this reason I tried to find explanations myself and I might be dead…
gapag
  • 61
  • 2
5
votes
1 answer

DPLL(T) algorithm used in Z3 (linear arithmetic)

The arithmetic solver of Z3 is developed based on DPLL(T) and Simplex (described in this paper). And I do not understand how Z3 perform the backtrack when a conflict explanation is generated. I give an example: The linear arithmetic formula…
ClePIR
  • 51
  • 1
4
votes
1 answer

How to best implement DPLL in C++?

I am trying to implement DPLL algorithm in C++, I am wondering what kind of data structure would be best for solving this type of recursion problem. Right now I am using vectors, but the code is long and ugly. Are there any suggestions? function…
Mark
  • 7,624
  • 15
  • 52
  • 76
4
votes
1 answer

How to estimate time spent in SAT solving part in z3 for SMT?

I have profiled my problems, which are in (pseudo-nonlinear) integer real fragment using the profiler gprof (stats here including the call graph) and was trying to separate out the time taken into two classes: I)The SAT solving part (including…
user1779685
  • 273
  • 1
  • 8
4
votes
1 answer

improving performance of a dpll algorithm

I'm implementing a DPLL algorithm in C++ as described in wikipedia: function DPLL(Φ) if Φ is a consistent set of literals then return true; if Φ contains an empty clause then return false; for every unit clause l in Φ Φ…
none
  • 10,753
  • 9
  • 46
  • 81
3
votes
1 answer

Mixing theories in SMT

I would like to construct an SMT formula having a number of assertions over integer linear arithmetic and Boolean variables as well as some assertions over real non-linear arithmetic and again Boolean variables. The assertions over integers and…
2
votes
2 answers

How to implement non chronological backtracking

I'm working on a CDCL SAT-Solver. I don't know how to implement non-chronological backtracking. Is this even possible with recursion or is it only possible in a iterative approach. Actually what i have done jet is implemented a DPLL Solver which…
man zet
  • 662
  • 5
  • 18
2
votes
1 answer

How do I implement a synthesizable DPLL in Verilog?

Is there any straight forward way to implement an all digital phase lock in synthesizable Verilog? Everything (including the VCO) should be synthesized. The signals I'm looking to lock to are ~0.1-1% of the system clock frequency. I am using one…
crasic
  • 1,628
  • 2
  • 15
  • 27
2
votes
1 answer

What is the c++ file and method where the DPLL algorithm backtraces up the tree?

I'm trying to find the c++ file for Z3 where the algorithm backtraces if it can't find a solution on the current branch. I've been looking through all the files and tried debug mode on the python files, but no luck so far. I just want to add a…
user6600604
1
vote
1 answer

DPLL What is a consistent set of literals?

I am writing a SAT solver and I started implementing a DPLL algorithm. I understand the algorithm and how it works, I also implemented a variation of it, but what bothers me is the next thing. function DPLL(Φ) if Φ is a consistent set of…
campovski
  • 2,332
  • 10
  • 33
1
vote
1 answer

DPLL algorithm procedure

I am trying to understand DPLL procedure before actually coding it. For example, I have these clauses: C1 : {c, !d, !b} C2 : {d, a} C3: {b, !d, !a} C4: {d, c, b, a} C5: {c, !d, !b} C6: {d, c, b} C7: {c} Now I take the decision…
nirvair
  • 3,099
  • 6
  • 38
  • 71
1
vote
2 answers

Simplifying constructor tags in Haskell

I'm a total n00b at Haskell and I'm trying to write a simple SAT solver using DPLL. I have a function expand that takes a schema from (A1 and A2 ...) Or (B1 and B2 ...) to conjunctive normal form: (A1 or B1) and (A1 or B2) and ... (A2 or B2) and…
avak
  • 169
  • 1
  • 10
1
vote
1 answer

Is the DPLL(T)-style SMT solving in z3 documented for Linear Real Arithmetic?

I am trying to devise ways to improve performance of z3 on my problems. I am aware of the the CAV'06 paper and the tech report . Do relevant parts of z3 v4.3.1 differ from what is described in these documents, and if so in what ways? Also, what is…
user1779685
  • 273
  • 1
  • 8
1
2