The DPLL algorithm Combinatorial Problem Solving (CPS) Albert - - PowerPoint PPT Presentation

the dpll algorithm
SMART_READER_LITE
LIVE PREVIEW

The DPLL algorithm Combinatorial Problem Solving (CPS) Albert - - PowerPoint PPT Presentation

The DPLL algorithm Combinatorial Problem Solving (CPS) Albert Oliveras Enric Rodr guez-Carbonell May 22, 2020 Overview of the session Designing an efficient SAT solver DPLL: A Bit of History Abstract DPLL: Rules


slide-1
SLIDE 1

The DPLL algorithm

Combinatorial Problem Solving (CPS)

Albert Oliveras Enric Rodr´ ıguez-Carbonell

May 22, 2020

slide-2
SLIDE 2

Overview of the session

2 / 11

Designing an efficient SAT solver

DPLL: A Bit of History

Abstract DPLL:

Rules

Examples

Theoretical Results

slide-3
SLIDE 3

Designing an efficient SAT solver

3 / 11

INPUT: formula F in CNF OUTPUT:

If F is SAT: YES + model

If F is UNSAT: NO + refutation (proof of unsatisfiability) Two possible methods:

resolution-based:

  • not direct to obtain model

+ straightforward to give refutation

DPLL-based: + straightforward to obtain model

  • not direct to give refutation

Due to their efficiency, DPLL-based solvers are the method of choice

slide-4
SLIDE 4

Overview of the session

3 / 11

Designing an efficient SAT solver

DPLL: A Bit of History

Abstract DPLL:

Rules

Examples

Theoretical Results

slide-5
SLIDE 5

DPLL - A Bit of History

4 / 11

Original DPLL was incomplete method for FOL satisfiability

First paper (Davis and Putnam) in 1960: memory problems

Second paper (Davis, Logemann and Loveland) in 1962: Depth-first-search with backtracking

Late 90’s and early 00’s improvements make DPLL efficient:

Break-through systems: GRASP, SATO, Chaff, MiniSAT

Stalmarck:1k var 1996 SATO:1k var 1996 GRASP:1k var 1996 DLL:10 var 1962 Chaff:10k var 2001 BDD:100 var 1986 DP:10 var 1960 MiniSAT:100k var 2003

slide-6
SLIDE 6

Overview of the session

4 / 11

Designing an efficient SAT solver

DPLL: A Bit of History

Abstract DPLL:

Rules

Examples

Theoretical Results

slide-7
SLIDE 7

Our Abstraction of DPLL

5 / 11

Given F in CNF, DPLL tries to build assignment M s.t. M | = F

Assignments M are represented as sequences of literals (those to be true): EXAMPLE: sequence pqr is M(p) = 1, M(q) = 0, M(r) = 1 (overlining bar ¯ may be used to represent negation, like ¬)

Order in M matters

No literal appears twice in M

No contradictory literals in M

Sequences may have decision literals, denoted ld.

We will introduce a transition system modelling DPLL

States in the transition system are pairs M | | F, where M is a (partial) assignment and F is a CNF

The algorithm starts with an empty assignment

The rules in the transition system indicate which steps M | | F = ⇒ M′ | | F ′ are allowed.

slide-8
SLIDE 8

Abstract DPLL - Rules

6 / 11

Extending the model:

Decide M | | F = ⇒ M ld | | F if

  • l or ¯

l occurs in F l is undefined in M UnitProp M | | F, C ∨ l = ⇒ M l | | F, C ∨ l if

  • M |

= ¬ C l is undefined in M

slide-9
SLIDE 9

Abstract DPLL - Rules (2)

7 / 11

Repairing the model:

Fail M | | F, C = ⇒ fail if

  • M |

= ¬C M contains no decision literals Backtrack M ld N | | F, C = ⇒ M ¯ l | | F, C if

  • M ld N |

= ¬C N contains no decision lits

slide-10
SLIDE 10

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-11
SLIDE 11

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide)

slide-12
SLIDE 12

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-13
SLIDE 13

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp)

slide-14
SLIDE 14

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-15
SLIDE 15

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide)

slide-16
SLIDE 16

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-17
SLIDE 17

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp)

slide-18
SLIDE 18

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-19
SLIDE 19

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide)

slide-20
SLIDE 20

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-21
SLIDE 21

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp)

slide-22
SLIDE 22

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 5d 6 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-23
SLIDE 23

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 5d 6 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Backtrack)

slide-24
SLIDE 24

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 5d 6 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Backtrack) 1d 2 3d 4 5 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒

slide-25
SLIDE 25

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 5d 6 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Backtrack) 1d 2 3d 4 5 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide)

slide-26
SLIDE 26

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 5d 6 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Backtrack) 1d 2 3d 4 5 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5 6d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2

slide-27
SLIDE 27

Abstract DPLL - Example 1

8 / 11

∅ | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (UnitProp) 1d 2 3d 4 5d 6 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Backtrack) 1d 2 3d 4 5 | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 = ⇒ (Decide) 1d 2 3d 4 5 6d | | 1 ∨ 2, 3 ∨ 4, 5 ∨ 6, 6 ∨ 5 ∨ 2 Final state found!

slide-28
SLIDE 28

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒

slide-29
SLIDE 29

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp)

slide-30
SLIDE 30

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒

slide-31
SLIDE 31

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide)

slide-32
SLIDE 32

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒

slide-33
SLIDE 33

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp)

slide-34
SLIDE 34

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2d 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒

slide-35
SLIDE 35

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2d 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Backtrack)

slide-36
SLIDE 36

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2d 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Backtrack) 1 2 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒

slide-37
SLIDE 37

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2d 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Backtrack) 1 2 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp)

slide-38
SLIDE 38

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2d 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Backtrack) 1 2 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒

slide-39
SLIDE 39

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2d 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Backtrack) 1 2 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Fail)

slide-40
SLIDE 40

Abstract DPLL - Example 2

9 / 11

∅ | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Decide) 1 2d | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2d 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Backtrack) 1 2 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (UnitProp) 1 2 3 | | 1 ∨ 2 ∨ 3, 1, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3, 2 ∨ 3 = ⇒ (Fail) fail

slide-41
SLIDE 41

Abstract DPLL

10 / 11

There are no infinite sequences of the form ∅ | | F = ⇒ . . .

If ∅ | | F = ⇒∗ M | | F with state M | | F final, then

F is satisfiable

M is a model of F

If ∅ | | F = ⇒∗ fail then F is unsatisfiable Hence the transition system gives a decision procedure for SAT

slide-42
SLIDE 42

Bibliography - Some further reading

11 / 11

Martin Davis, Hilary Putnam. A Computing Procedure for Quantification Theory. J. ACM 7(3): 201-215 (1960)

Martin Davis, George Logemann, Donald W. Loveland. A machine program for theorem-proving.

  • Commun. ACM 5(7): 394-397 (1962)

Robert Nieuwenhuis, Albert Oliveras, Cesare Tinelli. Solving SAT and SAT Modulo Theories: From an abstract Davis–Putnam–Logemann–Loveland procedure to DPLL(T).

  • J. ACM 53(6): 937-977 (2006)