Conflict-Driven Clause Learning Marijn J.H. Heule - - PowerPoint PPT Presentation

conflict driven clause learning
SMART_READER_LITE
LIVE PREVIEW

Conflict-Driven Clause Learning Marijn J.H. Heule - - PowerPoint PPT Presentation

Conflict-Driven Clause Learning Marijn J.H. Heule http://www.cs.cmu.edu/~mheule/15816-f19/ Automated Reasoning and Satisfiability, September 16, 2019 1/33 The Satisfiability (SAT) problem ( x 5 x 8 x 2 ) ( x 2 x 1 x


slide-1
SLIDE 1

1/33

Conflict-Driven Clause Learning

Marijn J.H. Heule http://www.cs.cmu.edu/~mheule/15816-f19/ Automated Reasoning and Satisfiability, September 16, 2019

slide-2
SLIDE 2

2/33

The Satisfiability (SAT) problem

(x5 ∨ x8 ∨ ¯ x2) ∧ (x2 ∨ ¯ x1 ∨ ¯ x3) ∧ (¯ x8 ∨ ¯ x3 ∨ ¯ x7) ∧ (¯ x5 ∨ x3 ∨ x8) ∧ (¯ x6 ∨ ¯ x1 ∨ ¯ x5) ∧ (x8 ∨ ¯ x9 ∨ x3) ∧ (x2 ∨ x1 ∨ x3) ∧ (¯ x1 ∨ x8 ∨ x4) ∧ (¯ x9 ∨ ¯ x6 ∨ x8) ∧ (x8 ∨ x3 ∨ ¯ x9) ∧ (x9 ∨ ¯ x3 ∨ x8) ∧ (x6 ∨ ¯ x9 ∨ x5) ∧ (x2 ∨ ¯ x3 ∨ ¯ x8) ∧ (x8 ∨ ¯ x6 ∨ ¯ x3) ∧ (x8 ∨ ¯ x3 ∨ ¯ x1) ∧ (¯ x8 ∨ x6 ∨ ¯ x2) ∧ (x7 ∨ x9 ∨ ¯ x2) ∧ (x8 ∨ ¯ x9 ∨ x2) ∧ (¯ x1 ∨ ¯ x9 ∨ x4) ∧ (x8 ∨ x1 ∨ ¯ x2) ∧ (x3 ∨ ¯ x4 ∨ ¯ x6) ∧ (¯ x1 ∨ ¯ x7 ∨ x5) ∧ (¯ x7 ∨ x1 ∨ x6) ∧ (¯ x5 ∨ x4 ∨ ¯ x6) ∧ (¯ x4 ∨ x9 ∨ ¯ x8) ∧ (x2 ∨ x9 ∨ x1) ∧ (x5 ∨ ¯ x7 ∨ x1) ∧ (¯ x7 ∨ ¯ x9 ∨ ¯ x6) ∧ (x2 ∨ x5 ∨ x4) ∧ (x8 ∨ ¯ x4 ∨ x5) ∧ (x5 ∨ x9 ∨ x3) ∧ (¯ x5 ∨ ¯ x7 ∨ x9) ∧ (x2 ∨ ¯ x8 ∨ x1) ∧ (¯ x7 ∨ x1 ∨ x5) ∧ (x1 ∨ x4 ∨ x3) ∧ (x1 ∨ ¯ x9 ∨ ¯ x4) ∧ (x3 ∨ x5 ∨ x6) ∧ (¯ x6 ∨ x3 ∨ ¯ x9) ∧ (¯ x7 ∨ x5 ∨ x9) ∧ (x7 ∨ ¯ x5 ∨ ¯ x2) ∧ (x4 ∨ x7 ∨ x3) ∧ (x4 ∨ ¯ x9 ∨ ¯ x7) ∧ (x5 ∨ ¯ x1 ∨ x7) ∧ (x5 ∨ ¯ x1 ∨ x7) ∧ (x6 ∨ x7 ∨ ¯ x3) ∧ (¯ x8 ∨ ¯ x6 ∨ ¯ x7) ∧ (x6 ∨ x2 ∨ x3) ∧ (¯ x8 ∨ x2 ∨ x5) Does there exist an assignment satisfying all clauses?

slide-3
SLIDE 3

3/33

Search for a satisfying assignment (or proof none exists)

(x5 ∨ x8 ∨ ¯ x2) ∧ (x2 ∨ ¯ x1 ∨ ¯ x3) ∧ (¯ x8 ∨ ¯ x3 ∨ ¯ x7) ∧ (¯ x5 ∨ x3 ∨ x8) ∧ (¯ x6 ∨ ¯ x1 ∨ ¯ x5) ∧ (x8 ∨ ¯ x9 ∨ x3) ∧ (x2 ∨ x1 ∨ x3) ∧ (¯ x1 ∨ x8 ∨ x4) ∧ (¯ x9 ∨ ¯ x6 ∨ x8) ∧ (x8 ∨ x3 ∨ ¯ x9) ∧ (x9 ∨ ¯ x3 ∨ x8) ∧ (x6 ∨ ¯ x9 ∨ x5) ∧ (x2 ∨ ¯ x3 ∨ ¯ x8) ∧ (x8 ∨ ¯ x6 ∨ ¯ x3) ∧ (x8 ∨ ¯ x3 ∨ ¯ x1) ∧ (¯ x8 ∨ x6 ∨ ¯ x2) ∧ (x7 ∨ x9 ∨ ¯ x2) ∧ (x8 ∨ ¯ x9 ∨ x2) ∧ (¯ x1 ∨ ¯ x9 ∨ x4) ∧ (x8 ∨ x1 ∨ ¯ x2) ∧ (x3 ∨ ¯ x4 ∨ ¯ x6) ∧ (¯ x1 ∨ ¯ x7 ∨ x5) ∧ (¯ x7 ∨ x1 ∨ x6) ∧ (¯ x5 ∨ x4 ∨ ¯ x6) ∧ (¯ x4 ∨ x9 ∨ ¯ x8) ∧ (x2 ∨ x9 ∨ x1) ∧ (x5 ∨ ¯ x7 ∨ x1) ∧ (¯ x7 ∨ ¯ x9 ∨ ¯ x6) ∧ (x2 ∨ x5 ∨ x4) ∧ (x8 ∨ ¯ x4 ∨ x5) ∧ (x5 ∨ x9 ∨ x3) ∧ (¯ x5 ∨ ¯ x7 ∨ x9) ∧ (x2 ∨ ¯ x8 ∨ x1) ∧ (¯ x7 ∨ x1 ∨ x5) ∧ (x1 ∨ x4 ∨ x3) ∧ (x1 ∨ ¯ x9 ∨ ¯ x4) ∧ (x3 ∨ x5 ∨ x6) ∧ (¯ x6 ∨ x3 ∨ ¯ x9) ∧ (¯ x7 ∨ x5 ∨ x9) ∧ (x7 ∨ ¯ x5 ∨ ¯ x2) ∧ (x4 ∨ x7 ∨ x3) ∧ (x4 ∨ ¯ x9 ∨ ¯ x7) ∧ (x5 ∨ ¯ x1 ∨ x7) ∧ (x5 ∨ ¯ x1 ∨ x7) ∧ (x6 ∨ x7 ∨ ¯ x3) ∧ (¯ x8 ∨ ¯ x6 ∨ ¯ x7) ∧ (x6 ∨ x2 ∨ x3) ∧ (¯ x8 ∨ x2 ∨ x5)

slide-4
SLIDE 4

4/33

Conflict-driven Clause Learning: Overview ◮ Most successful architecture

slide-5
SLIDE 5

4/33

Conflict-driven Clause Learning: Overview ◮ Most successful architecture ◮ Superior on industrial benchmarks

slide-6
SLIDE 6

4/33

Conflict-driven Clause Learning: Overview ◮ Most successful architecture ◮ Superior on industrial benchmarks ◮ Brute-force?

◮ Addition conflict clauses ◮ Fast unit propagation

slide-7
SLIDE 7

4/33

Conflict-driven Clause Learning: Overview ◮ Most successful architecture ◮ Superior on industrial benchmarks ◮ Brute-force?

◮ Addition conflict clauses ◮ Fast unit propagation

◮ Complete local search (for a refutation)?

slide-8
SLIDE 8

4/33

Conflict-driven Clause Learning: Overview ◮ Most successful architecture ◮ Superior on industrial benchmarks ◮ Brute-force?

◮ Addition conflict clauses ◮ Fast unit propagation

◮ Complete local search (for a refutation)? ◮ State-of-the-art (sequential) CDCL solvers: CaDiCaL, Glucose, CryptoMiniSAT

slide-9
SLIDE 9

5/33

Clause Learning Data-structures Heuristics Clause Management Conflict-Clause Minimization Recent Advances and Conclusions

slide-10
SLIDE 10

6/33

Clause Learning Data-structures Heuristics Clause Management Conflict-Clause Minimization Recent Advances and Conclusions

slide-11
SLIDE 11

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

slide-12
SLIDE 12

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

1

x5 = 1

slide-13
SLIDE 13

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

1 2

x5 = 1 x2 = 1

slide-14
SLIDE 14

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

1 2 6

x5 = 1 x2 = 1

slide-15
SLIDE 15

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

1 2 6 7

x5 = 1 x2 = 1 x1 = 0

slide-16
SLIDE 16

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

1 2 6 7

x5 = 1 x2 = 1 x1 = 0 x4 = 1

slide-17
SLIDE 17

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

1 2 6 7

x5 = 1 x2 = 1 x1 = 0 x4 = 1 x3 = 1 x3 = 0

slide-18
SLIDE 18

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

7 1 2 7 7 7

x1 = 0 x4 = 1 x2 = 1 x5 = 1 x3 = 0 x3 = 1

1 2 6 7

x5 = 1 x2 = 1 x1 = 0 x4 = 1 x3 = 1 x3 = 0

slide-19
SLIDE 19

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

7 1 2 7 7 7

x1 = 0 x4 = 1 x2 = 1 x5 = 1 x3 = 0 x3 = 1 (¯ x2 ∨ ¯ x4 ∨ ¯ x5)

1 2 6 7

x5 = 1 x2 = 1 x1 = 0 x4 = 1 x3 = 1 x3 = 0

slide-20
SLIDE 20

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

7 1 2 7 7 7

x1 = 0 x4 = 1 x2 = 1 x5 = 1 x3 = 0 x3 = 1 (¯ x2 ∨ ¯ x4 ∨ ¯ x5)

1 2 6 7

x5 = 1 x2 = 1 x1 = 0 x4 = 1 x3 = 1 x3 = 0

slide-21
SLIDE 21

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

7 1 2 7 7 7

x1 = 0 x4 = 1 x2 = 1 x5 = 1 x3 = 0 x3 = 1 (¯ x2 ∨ ¯ x4 ∨ ¯ x5)

1 2 6 7 2

x5 = 1 x2 = 1 x1 = 0 x4 = 1 x3 = 1 x3 = 0 x4 = 0 x1 = 1

slide-22
SLIDE 22

7/33

Conflict-driven SAT solvers: Search and Analysis

(x1 ∨ x4) ∧ (x3 ∨ ¯ x4 ∨ ¯ x5) ∧ (¯ x3 ∨ ¯ x2 ∨ ¯ x4) ∧ Fextra

7 1 2 7 7 7

x1 = 0 x4 = 1 x2 = 1 x5 = 1 x3 = 0 x3 = 1 (¯ x2 ∨ ¯ x4 ∨ ¯ x5)

1 2 6 7 2

x5 = 1 x2 = 1 x1 = 0 x4 = 1 x3 = 1 x3 = 0 x4 = 0 x1 = 1

slide-23
SLIDE 23

8/33

Implication graph [Marques-SilvaSakallah ’96]

CDCL in a nutshell:

  • 1. Main loop combines efficient problem simplification with

cheap, but effective decision heuristics; (> 90% of time)

  • 2. Reasoning kicks in if the current state is conflicting;
  • 3. The current state is analyzed and turned into a constraint;
  • 4. The constraint is added to the problem, the heuristics are

updated, and the algorithm (partially) restarts.

slide-24
SLIDE 24

8/33

Implication graph [Marques-SilvaSakallah ’96]

CDCL in a nutshell:

  • 1. Main loop combines efficient problem simplification with

cheap, but effective decision heuristics; (> 90% of time)

  • 2. Reasoning kicks in if the current state is conflicting;
  • 3. The current state is analyzed and turned into a constraint;
  • 4. The constraint is added to the problem, the heuristics are

updated, and the algorithm (partially) restarts. However, it has three weaknesses: ◮ CDCL is notoriously hard to parallelize; ◮ the representation impacts CDCL performance; and ◮ CDCL has exponential runtime on some “simple” problems.

slide-25
SLIDE 25

9/33

Conflict-driven Clause Learning: Pseudo-code

1: while TRUE do 2:

ldecision := Decide ()

3:

If no ldecision then return satisfiable

4:

F := Simplify (F(ldecision ← 1))

5:

while F contains Cfalsified do

6:

Cconflict := Analyze (Cfalsified)

7:

If Cconflict = ∅ then return unsatisfiable

8:

BackTrack (Cconflict)

9:

F := Simplify (F ∪ {Cconflict})

10:

end while

11: end while

slide-26
SLIDE 26

10/33

Learning conflict clauses [Marques-SilvaSakallah’96]

6

x13=0

7

x11=1

4

x6=0 7 x7=1 7 x12=0 7 x2=0

3 x4=1

7 x10=0

1 x8=1

7 x1=1 7 x3=1 7 x5=0

5 x17=0 2 x19=1

7 x18=1 7 x18=0

slide-27
SLIDE 27

10/33

Learning conflict clauses [Marques-SilvaSakallah’96]

6

x13=0

7

x11=1

4

x6=0 7 x7=1 7 x12=0 7 x2=0

3 x4=1

7 x10=0

1 x8=1

7 x1=1 7 x3=1 7 x5=0

5 x17=0 2 x19=1

7 x18=1 7 x18=0 (x 1 ∨ x3 ∨ x5 ∨ x17 ∨ x19) tri-asserting clause

slide-28
SLIDE 28

10/33

Learning conflict clauses [Marques-SilvaSakallah’96]

6

x13=0

7

x11=1

4

x6=0 7 x7=1 7 x12=0 7 x2=0

3 x4=1

7 x10=0

1 x8=1

7 x1=1 7 x3=1 7 x5=0

5 x17=0 2 x19=1

7 x18=1 7 x18=0 (x10 ∨ x8 ∨ x17 ∨ x19) first unique implication point

slide-29
SLIDE 29

10/33

Learning conflict clauses [Marques-SilvaSakallah’96]

6

x13=0

7

x11=1

4

x6=0 7 x7=1 7 x12=0 7 x2=0

3 x4=1

7 x10=0

1 x8=1

7 x1=1 7 x3=1 7 x5=0

5 x17=0 2 x19=1

7 x18=1 7 x18=0 (x2 ∨ x4 ∨ x8 ∨ x17 ∨ x19) second unique implication point

slide-30
SLIDE 30

11/33

Average Learned Clause Length

slide-31
SLIDE 31

12/33

Clause Learning Data-structures Heuristics Clause Management Conflict-Clause Minimization Recent Advances and Conclusions

slide-32
SLIDE 32

13/33

Simple data structure for unit propagation

slide-33
SLIDE 33

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 =*, x2 =*, x3 =*, x4 =*, x5 =*, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-34
SLIDE 34

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 =*, x2 =*, x3 =*, x4 =*, x5 = 1, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-35
SLIDE 35

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 =*, x2 =*, x3 = 1, x4 =*, x5 = 1, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-36
SLIDE 36

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 =*, x2 =*, x3 = 1, x4 =*, x5 = 1, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-37
SLIDE 37

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 = 1, x2 =*, x3 = 1, x4 =*, x5 = 1, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-38
SLIDE 38

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 = 1, x2 =*, x3 = 1, x4 =*, x5 = 1, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-39
SLIDE 39

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 = 1, x2 =*, x3 = 1, x4 = 0, x5 = 1, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-40
SLIDE 40

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 = 1, x2 = 0, x3 = 1, x4 = 0, x5 = 1, x6 =*} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-41
SLIDE 41

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 = 1, x2 = 0, x3 = 1, x4 = 0, x5 = 1, x6 = 1} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-42
SLIDE 42

14/33

Conflict-driven: Watch pointers (1) [MoskewiczMZZM’01] ϕ = {x1 = 1, x2 = 0, x3 = 1, x4 = 0, x5 = 1, x6 = 1} x1 x2 x3 x5 x6 x1 x3 x4 x5 x6

slide-43
SLIDE 43

15/33

Conflict-driven: Watch pointers (2) [MoskewiczMZZM’01] Only examine (get in the cache) a clause when both

◮ a watch pointer gets falsified ◮ the other one is not satisfied

While backjumping, just unassign variables Conflict clauses → watch pointers No detailed information available Not used for binary clauses

slide-44
SLIDE 44

16/33

Average Number Clauses Visited Per Propagation

slide-45
SLIDE 45

17/33

Percentage visited clauses with other watched literal true

slide-46
SLIDE 46

18/33

Clause Learning Data-structures Heuristics Clause Management Conflict-Clause Minimization Recent Advances and Conclusions

slide-47
SLIDE 47

19/33

Most important CDCL heuristics Variable selection heuristics

◮ aim: minimize the search space ◮ plus: could compensate a bad value selection

slide-48
SLIDE 48

19/33

Most important CDCL heuristics Variable selection heuristics

◮ aim: minimize the search space ◮ plus: could compensate a bad value selection

Value selection heuristics

◮ aim: guide search towards a solution (or conflict) ◮ plus: could compensate a bad variable selection, cache solutions of subproblems [PipatsrisawatDarwiche’07]

slide-49
SLIDE 49

19/33

Most important CDCL heuristics Variable selection heuristics

◮ aim: minimize the search space ◮ plus: could compensate a bad value selection

Value selection heuristics

◮ aim: guide search towards a solution (or conflict) ◮ plus: could compensate a bad variable selection, cache solutions of subproblems [PipatsrisawatDarwiche’07]

Restart strategies

◮ aim: avoid heavy-tail behavior [GomesSelmanCrato’97] ◮ plus: focus search on recent conflicts when combined with dynamic heuristics

slide-50
SLIDE 50

20/33

Variable selection heuristics Based on the occurrences in the (reduced) formula

◮ examples: Jeroslow-Wang, Maximal Occurrence in clauses

  • f Minimal Size (MOMS), look-aheads

◮ not practical for CDCL solver due to watch pointers

slide-51
SLIDE 51

20/33

Variable selection heuristics Based on the occurrences in the (reduced) formula

◮ examples: Jeroslow-Wang, Maximal Occurrence in clauses

  • f Minimal Size (MOMS), look-aheads

◮ not practical for CDCL solver due to watch pointers

Variable State Independent Decaying Sum (VSIDS)

◮ original idea (zChaff): for each conflict, increase the score

  • f involved variables by 1, half all scores each 256 conflicts

[MoskewiczMZZM’01] ◮ improvement (MiniSAT): for each conflict, increase the score of involved variables by δ and increase δ := 1.05δ [EenS¨

  • rensson’03]
slide-52
SLIDE 52

21/33

Visualization of VSIDS in PicoSAT http://www.youtube.com/watch?v=MOjhFywLre8

slide-53
SLIDE 53

22/33

Value selection heuristics Based on the occurrences in the (reduced) formula

◮ examples: Jeroslow-Wang, Maximal Occurrence in clauses

  • f Minimal Size (MOMS), look-aheads

◮ not practical for CDCL solver due to watch pointers

slide-54
SLIDE 54

22/33

Value selection heuristics Based on the occurrences in the (reduced) formula

◮ examples: Jeroslow-Wang, Maximal Occurrence in clauses

  • f Minimal Size (MOMS), look-aheads

◮ not practical for CDCL solver due to watch pointers

Based on the encoding / consequently

◮ negative branching (early MiniSAT) [EenS¨

  • rensson’03]
slide-55
SLIDE 55

22/33

Value selection heuristics Based on the occurrences in the (reduced) formula

◮ examples: Jeroslow-Wang, Maximal Occurrence in clauses

  • f Minimal Size (MOMS), look-aheads

◮ not practical for CDCL solver due to watch pointers

Based on the encoding / consequently

◮ negative branching (early MiniSAT) [EenS¨

  • rensson’03]

Based on the last implied value (phase-saving)

◮ introduced to CDCL [PipatsrisawatDarwiche’07] ◮ already used in local search [HirschKojevnikov’01]

slide-56
SLIDE 56

23/33

Heuristics: Phase-saving [PipatsrisawatDarwiche’07]

Selecting the last implied value remembers solved components negative branching phase-saving

slide-57
SLIDE 57

24/33

Restarts Restarts in CDCL solvers:

◮ Counter heavy-tail behavior [GomesSelmanCrato’97] ◮ Unassign all variables but keep the (dynamic) heuristics

slide-58
SLIDE 58

24/33

Restarts Restarts in CDCL solvers:

◮ Counter heavy-tail behavior [GomesSelmanCrato’97] ◮ Unassign all variables but keep the (dynamic) heuristics

Restart strategies: [Walsh’99, LubySinclairZuckerman’93]

◮ Geometrical restart: e.g. 100, 150, 225, 333, 500, 750, . . . ◮ Luby sequence: e.g. 100, 100, 200, 100, 100, 200, 400, . . .

slide-59
SLIDE 59

24/33

Restarts Restarts in CDCL solvers:

◮ Counter heavy-tail behavior [GomesSelmanCrato’97] ◮ Unassign all variables but keep the (dynamic) heuristics

Restart strategies: [Walsh’99, LubySinclairZuckerman’93]

◮ Geometrical restart: e.g. 100, 150, 225, 333, 500, 750, . . . ◮ Luby sequence: e.g. 100, 100, 200, 100, 100, 200, 400, . . .

Rapid restarts by reusing trail: [vanderTakHeuleRamos’11]

◮ Partial restart same effect as full restart ◮ Optimal strategy Luby-1: 1, 1, 2, 1, 1, 2, 4, . . .

slide-60
SLIDE 60

25/33

Heuristics: SAT vs UNSAT [Oh’15]

The best heuristics choices depend on satisfiability: E.g. ◮ Restart frequently for UNSAT instances to get conflict early ◮ Restart sporadically for SAT instances to keep “progress” Also, keeping learned clauses is less important on SAT instances and can actually slow down the search. State-of-the-art CDCL solvers, such as CaDiCaL, have separate modes for SAT and UNSAT and they alternate between them.

slide-61
SLIDE 61

26/33

Clause Learning Data-structures Heuristics Clause Management Conflict-Clause Minimization Recent Advances and Conclusions

slide-62
SLIDE 62

27/33

Clause delection [EenS¨

  • rensson’03, AudemardSimon’09]

Conflict clauses can significantly slow down CDCL solvers: ◮ Conflict clauses can quickly outnumber the original clauses ◮ Conflict clauses consists of important variables Clause deletion is used to reduce the overhead: ◮ When the learned clause reach a limit, remove half ◮ Increase limit after every removal (completeness)

slide-63
SLIDE 63

27/33

Clause delection [EenS¨

  • rensson’03, AudemardSimon’09]

Conflict clauses can significantly slow down CDCL solvers: ◮ Conflict clauses can quickly outnumber the original clauses ◮ Conflict clauses consists of important variables Clause deletion is used to reduce the overhead: ◮ When the learned clause reach a limit, remove half ◮ Increase limit after every removal (completeness) Clause deletion heuristics: ◮ length of the clause ◮ relevance of the clause (when was it used in Analyze) ◮ the number of involved decision levels

slide-64
SLIDE 64

28/33

Clause Learning Data-structures Heuristics Clause Management Conflict-Clause Minimization Recent Advances and Conclusions

slide-65
SLIDE 65

29/33

Self-Subsumption Use self-subsumption to shorten conflict clauses C ∨ l D ∨ ¯ l D C ⊆ D (a∨b∨l) (a∨b∨c∨¯ l) (a∨b∨c) Conflict clause minimization is an important

  • ptimization.
slide-66
SLIDE 66

29/33

Self-Subsumption Use self-subsumption to shorten conflict clauses C ∨ l D ∨ ¯ l D C ⊆ D (a∨b∨l) (a∨b∨c∨¯ l) (a∨b∨c) Conflict clause minimization is an important

  • ptimization.

Use implication chains to further minimization: . . . (¯ a ∨ b)(¯ b ∨ c)(a ∨ c ∨ d) . . . ⇒ . . . (¯ a ∨ b)(¯ b ∨ c)(c ∨ d) . . .

slide-67
SLIDE 67

30/33

Conflict-clause minimization [S¨

  • renssonBiere’09]

1 1 1 2 2 2 2 3 3 4 4 4 4 4 4 4 x1 = 0 x2 = 1 x3 = 0 x4 = 1 x5 = 0 x6 = 1 x7 = 0 x8 = 1 x9 = 0 x10 = 1 x11 = 0 x12 = 1 x13 = 0 x14 = 1 x15 = 0 x13 = 1

slide-68
SLIDE 68

30/33

Conflict-clause minimization [S¨

  • renssonBiere’09]

1 1 1 2 2 2 2 3 3 4 4 4 4 4 4 4 x1 = 0 x2 = 1 x3 = 0 x4 = 1 x5 = 0 x6 = 1 x7 = 0 x8 = 1 x9 = 0 x10 = 1 x11 = 0 x12 = 1 x13 = 0 x14 = 1 x15 = 0 x13 = 1 first unique implication point (¯ x2 ∨ x5 ∨ ¯ x6 ∨ x7 ∨ x11)

slide-69
SLIDE 69

30/33

Conflict-clause minimization [S¨

  • renssonBiere’09]

1 1 1 2 2 2 2 3 3 4 4 4 4 4 4 4 x1 = 0 x2 = 1 x3 = 0 x4 = 1 x5 = 0 x6 = 1 x7 = 0 x8 = 1 x9 = 0 x10 = 1 x11 = 0 x12 = 1 x13 = 0 x14 = 1 x15 = 0 x13 = 1 last unique implication point (x1 ∨ ¯ x4 ∨ ¯ x8 ∨ ¯ x10)

slide-70
SLIDE 70

30/33

Conflict-clause minimization [S¨

  • renssonBiere’09]

1 1 1 2 2 2 2 3 3 4 4 4 4 4 4 4 x1 = 0 x2 = 1 x3 = 0 x4 = 1 x5 = 0 x6 = 1 x7 = 0 x8 = 1 x9 = 0 x10 = 1 x11 = 0 x12 = 1 x13 = 0 x14 = 1 x15 = 0 x13 = 1 reduced conflict clause (¯ x2 ∨ x5 ∨ ¯ x6 ∨ x11)

slide-71
SLIDE 71

30/33

Conflict-clause minimization [S¨

  • renssonBiere’09]

1 1 1 2 2 2 2 3 3 4 4 4 4 4 4 4 x1 = 0 x2 = 1 x3 = 0 x4 = 1 x5 = 0 x6 = 1 x7 = 0 x8 = 1 x9 = 0 x10 = 1 x11 = 0 x12 = 1 x13 = 0 x14 = 1 x15 = 0 x13 = 1 minimized conflict clause (¯ x2 ∨ x5 ∨ x11)

slide-72
SLIDE 72

31/33

Clause Learning Data-structures Heuristics Clause Management Conflict-Clause Minimization Recent Advances and Conclusions

slide-73
SLIDE 73

32/33

Recent Advances A new idea contributes to winning the competition. Winner 2017: Clause vivification during search [LuoLiXiaoMany´ aL¨ u’17] Winner 2018: Chronological backtracking [NadelRyvchin’18] Winner 2019: Multiple learnt clauses per conflict [KochemazovZaikinKondratievSemenov’19]

slide-74
SLIDE 74

33/33

Conclusions: state-of-the-art CDCL solver Key contributions to CDCL solvers:

◮ concept of conflict clauses (grasp) [Marques-SilvaSakallah’96] ◮ restart strategies [GomesSC’97,LubySZ’93] ◮ 2-watch pointers and VSIDS (zChaff) [MoskewiczMZZM’01] ◮ efficient implementation (Minisat) [EenS¨

  • rensson’03]

◮ phase-saving (Rsat) [PipatsrisawatDarwiche’07] ◮ conflict-clause minimization [S¨

  • renssonBiere’09]

◮ SAT vs UNSAT [Oh’15]

+ Pre- and in-processing techniques