Lookahead Techniques Marijn J.H. Heule - - PowerPoint PPT Presentation

lookahead techniques
SMART_READER_LITE
LIVE PREVIEW

Lookahead Techniques Marijn J.H. Heule - - PowerPoint PPT Presentation

Lookahead Techniques Marijn J.H. Heule http://www.cs.cmu.edu/~mheule/15816-f19/ Automated Reasoning and Satisfiability, September 26, 2019 1 / 29 DPLL Procedure Look-ahead Architecture Look-ahead Learning Autarky Reasoning Tree-based


slide-1
SLIDE 1

Lookahead Techniques

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

1 / 29

slide-2
SLIDE 2

DPLL Procedure Look-ahead Architecture Look-ahead Learning Autarky Reasoning Tree-based Look-ahead

2 / 29

slide-3
SLIDE 3

DPLL Procedure Look-ahead Architecture Look-ahead Learning Autarky Reasoning Tree-based Look-ahead

3 / 29

slide-4
SLIDE 4

SAT Solving: DPLL Davis Putnam Logemann Loveland [DP60,DLL62] Recursive procedure that in each recursive call:

Simplifies the formula (using unit propagation) Splits the formula into two subformulas

  • Variable selection heuristics (which variable to split on)
  • Direction heuristics (which subformula to explore first)

4 / 29

slide-5
SLIDE 5

DPLL: Example FDPLL := (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x3) ∧ (x1 ∨ x3)

5 / 29

slide-6
SLIDE 6

DPLL: Example FDPLL := (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x3) ∧ (x1 ∨ x3) x3 1

5 / 29

slide-7
SLIDE 7

DPLL: Example FDPLL := (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x3) ∧ (x1 ∨ x3) x3 1 x2 x1 x3 1 1 1

5 / 29

slide-8
SLIDE 8

DPLL: Slightly Harder Example Slightly Harder Example Construct a DPLL tree for: (a ∨ b ∨ c) ∧ (a ∨ b ∨ c) ∧ (b ∨ c ∨ d) ∧ (b ∨ c ∨ d) ∧ (a ∨ c ∨ d) ∧ (a ∨ c ∨ d) ∧ (a ∨ b ∨ d)

6 / 29

slide-9
SLIDE 9

Look-ahead: Definition DPLL with selection of (effective) decision variables by look-aheads on variables

7 / 29

slide-10
SLIDE 10

Look-ahead: Definition DPLL with selection of (effective) decision variables by look-aheads on variables Look-ahead: Assign a variable to a truth value

7 / 29

slide-11
SLIDE 11

Look-ahead: Definition DPLL with selection of (effective) decision variables by look-aheads on variables Look-ahead: Assign a variable to a truth value Simplify the formula

7 / 29

slide-12
SLIDE 12

Look-ahead: Definition DPLL with selection of (effective) decision variables by look-aheads on variables Look-ahead: Assign a variable to a truth value Simplify the formula Measure the reduction

7 / 29

slide-13
SLIDE 13

Look-ahead: Definition DPLL with selection of (effective) decision variables by look-aheads on variables Look-ahead: Assign a variable to a truth value Simplify the formula Measure the reduction Learn if possible

7 / 29

slide-14
SLIDE 14

Look-ahead: Definition DPLL with selection of (effective) decision variables by look-aheads on variables Look-ahead: Assign a variable to a truth value Simplify the formula Measure the reduction Learn if possible Backtrack

7 / 29

slide-15
SLIDE 15

DPLL Procedure Look-ahead Architecture Look-ahead Learning Autarky Reasoning Tree-based Look-ahead

8 / 29

slide-16
SLIDE 16

Look-ahead: Example Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6)

9 / 29

slide-17
SLIDE 17

Look-ahead: Example Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0}

9 / 29

slide-18
SLIDE 18

Look-ahead: Example Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0}

9 / 29

slide-19
SLIDE 19

Look-ahead: Example Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0}

9 / 29

slide-20
SLIDE 20

Look-ahead: Example Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0, x3=1}

9 / 29

slide-21
SLIDE 21

Look-ahead: Properties Very expensive

10 / 29

slide-22
SLIDE 22

Look-ahead: Properties Very expensive Effective compared to cheap heuristics

10 / 29

slide-23
SLIDE 23

Look-ahead: Properties Very expensive Effective compared to cheap heuristics Detection of failed literals (and more)

10 / 29

slide-24
SLIDE 24

Look-ahead: Properties Very expensive Effective compared to cheap heuristics Detection of failed literals (and more) Strong on random k-SAT formulae

10 / 29

slide-25
SLIDE 25

Look-ahead: Properties Very expensive Effective compared to cheap heuristics Detection of failed literals (and more) Strong on random k-SAT formulae Examples: march, OKsolver, kcnfs

10 / 29

slide-26
SLIDE 26

DEMO

11 / 29

slide-27
SLIDE 27

Look-ahead: Reduction heuristics Number of satisfied clauses

12 / 29

slide-28
SLIDE 28

Look-ahead: Reduction heuristics Number of satisfied clauses Number of implied variables

12 / 29

slide-29
SLIDE 29

Look-ahead: Reduction heuristics Number of satisfied clauses Number of implied variables New (reduced, not satisfied) clauses

  • Smaller clauses more important
  • Weights based on occurring

12 / 29

slide-30
SLIDE 30

Look-ahead: Architecture

xa xb xc

1

?

1 DPLL

x1 x2 x3 x4 FLA

9 1 9 13 1 6 1 7 10 1 8 LookAhead H(xi)

13 / 29

slide-31
SLIDE 31

Look-ahead: Pseudo-code

1: F := Simplify (F) 2: if F is empty then return satisfiable 3: if ∅ ∈ F then return unsatisfiable 4: F; ldecision := LookAhead (F) 5: if (DPLL( F(ldecision ← 1)) = satisfiable) then 6:

return satisfiable

7: return DPLL (F(ldecision ← 0))

14 / 29

slide-32
SLIDE 32

DPLL Procedure Look-ahead Architecture Look-ahead Learning Autarky Reasoning Tree-based Look-ahead

15 / 29

slide-33
SLIDE 33

Local Learning Look-ahead solvers do not perform global learning, in contrast to contrast to conflict-driven clause learning (CDCL) solvers Instead, look-ahead solvers learn locally:

Learn small (typically unit or binary) clauses that are valid for the current node and lower in the DPLL tree Locally learnt clauses have to be removed during backtracking

16 / 29

slide-34
SLIDE 34

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1 results in a conflict: failed literal l is forced to false followed by unit propagation if both x and x are failed literals, then backtrack Failed literals can be generalized by double lookahead: assign two literals and learn a binary clause in case of a conflict.

17 / 29

slide-35
SLIDE 35

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1 results in a conflict: failed literal l is forced to false followed by unit propagation if both x and x are failed literals, then backtrack Failed literals can be generalized by double lookahead: assign two literals and learn a binary clause in case of a conflict. Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6)

17 / 29

slide-36
SLIDE 36

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1 results in a conflict: failed literal l is forced to false followed by unit propagation if both x and x are failed literals, then backtrack Failed literals can be generalized by double lookahead: assign two literals and learn a binary clause in case of a conflict. Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x4=0, x6=1}

17 / 29

slide-37
SLIDE 37

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1 results in a conflict: failed literal l is forced to false followed by unit propagation if both x and x are failed literals, then backtrack Failed literals can be generalized by double lookahead: assign two literals and learn a binary clause in case of a conflict. Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x4=0, x6=1, x1=1}

17 / 29

slide-38
SLIDE 38

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1 results in a conflict: failed literal l is forced to false followed by unit propagation if both x and x are failed literals, then backtrack Failed literals can be generalized by double lookahead: assign two literals and learn a binary clause in case of a conflict. Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x4=0, x6=1, x1=1, x2=1}

17 / 29

slide-39
SLIDE 39

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1 results in a conflict: failed literal l is forced to false followed by unit propagation if both x and x are failed literals, then backtrack Failed literals can be generalized by double lookahead: assign two literals and learn a binary clause in case of a conflict. Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x4=0, x6=1, x1=1, x2=1, x3=1}

17 / 29

slide-40
SLIDE 40

Hyper Binary Resolution [Bacchus 2002]

Definition (Hyper Binary Resolution Rule)

(x ∨ x1 ∨ x2 ∨ · · · ∨ xn) (¯ x1 ∨ x′) (¯ x2 ∨ x′) . . . (¯ xn ∨ x′) (x ∨ x′) binary edge hyper edge hyper binary edge ¯ x′ x ¯ x1 . . . ¯ x2 ¯ xn x′ ¯ x Hyper Binary Resolution Rule: combines multiple resolution steps into one uses one n-ary clauses and multiple binary clauses special case hyper unary resolution where x = x′

18 / 29

slide-41
SLIDE 41

Look-ahead: Hyper Binary Resolvents Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6)

19 / 29

slide-42
SLIDE 42

Look-ahead: Hyper Binary Resolvents Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0}

19 / 29

slide-43
SLIDE 43

Look-ahead: Hyper Binary Resolvents Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0}

19 / 29

slide-44
SLIDE 44

Look-ahead: Hyper Binary Resolvents Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0}

19 / 29

slide-45
SLIDE 45

Look-ahead: Hyper Binary Resolvents Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0, x3=1}

19 / 29

slide-46
SLIDE 46

Look-ahead: Hyper Binary Resolvents Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0, x3=1} hyper binary resolvents: (x2 ∨ x6) and (x2 ∨ x3)

19 / 29

slide-47
SLIDE 47

Look-ahead: Hyper Binary Resolvents Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0, x3=1} hyper binary resolvents: (x2 ∨ x6) and (x2 ∨ x3) Which one is more useful?

19 / 29

slide-48
SLIDE 48

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6)

20 / 29

slide-49
SLIDE 49

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1}

20 / 29

slide-50
SLIDE 50

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1}

20 / 29

slide-51
SLIDE 51

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1}

20 / 29

slide-52
SLIDE 52

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1}

20 / 29

slide-53
SLIDE 53

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1} Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6)

20 / 29

slide-54
SLIDE 54

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1} Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=0}

20 / 29

slide-55
SLIDE 55

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1} Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=0, x6=0}

20 / 29

slide-56
SLIDE 56

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1} Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=0, x6=0, x3=1}

20 / 29

slide-57
SLIDE 57

Look-ahead: Necessary assignments Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1} Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=0, x6=0, x3=1}

20 / 29

slide-58
SLIDE 58

St˚ almarck’s Method

In short, St˚ almarck’s Method is a procedure that generalizes the concept of necessary assignments. For each variable x, (Simplify(F |x) ∩ Simplify(F |x)) \ F is added to F. The above is repeated until fixpoint, i.e., until ∀x : (Simplify(F |x) ∩ Simplify(F |x)) \ F = ∅ Afterwards the procedure is repeated using all pairs for variables x and y: Add (Simplify(F |xy) ∩ Simplify(F |xy) ∩ Simplify(F |xy ∩ Simplify(F |xy)) \ F to F. The second round is very expensive and can typically not be finished in reasonable time.

21 / 29

slide-59
SLIDE 59

DPLL Procedure Look-ahead Architecture Look-ahead Learning Autarky Reasoning Tree-based Look-ahead

22 / 29

slide-60
SLIDE 60

Look-ahead: Autarky definition An autarky is a partial assignment that satisfies all clauses that are “touched” by the assignment

23 / 29

slide-61
SLIDE 61

Look-ahead: Autarky definition An autarky is a partial assignment that satisfies all clauses that are “touched” by the assignment a pure literal is an autarky

23 / 29

slide-62
SLIDE 62

Look-ahead: Autarky definition An autarky is a partial assignment that satisfies all clauses that are “touched” by the assignment a pure literal is an autarky each satisfying assignment is an autarky

23 / 29

slide-63
SLIDE 63

Look-ahead: Autarky definition An autarky is a partial assignment that satisfies all clauses that are “touched” by the assignment a pure literal is an autarky each satisfying assignment is an autarky the remaining formula is satisfiability equivalent to the original formula

23 / 29

slide-64
SLIDE 64

Look-ahead: Autarky definition An autarky is a partial assignment that satisfies all clauses that are “touched” by the assignment a pure literal is an autarky each satisfying assignment is an autarky the remaining formula is satisfiability equivalent to the original formula An 1-autarky is a partial assignment that satisfies all touched clauses except one

23 / 29

slide-65
SLIDE 65

Look-ahead: Autarky detection Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6)

24 / 29

slide-66
SLIDE 66

Look-ahead: Autarky detection Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1}

24 / 29

slide-67
SLIDE 67

Look-ahead: Autarky detection Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1}

24 / 29

slide-68
SLIDE 68

Look-ahead: Autarky detection Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1}

24 / 29

slide-69
SLIDE 69

Look-ahead: Autarky detection Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1}

24 / 29

slide-70
SLIDE 70

Look-ahead: Autarky detection Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1} Flearning satisfiability equivalent to (x5 ∨ x6)

24 / 29

slide-71
SLIDE 71

Look-ahead: Autarky detection Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x1=1, x2=1, x3=1, x4=1} Flearning satisfiability equivalent to (x5 ∨ x6) Could reduce computational cost on UNSAT

24 / 29

slide-72
SLIDE 72

Look-ahead: Autarky or Conflict on 2-SAT Formulae Lookahead techniques can solve 2-SAT formulae in polynomial time. Each lookahead on l results:

  • 1. in an autarky: forcing l to be true
  • 2. in a conflict: forcing l to be false

25 / 29

slide-73
SLIDE 73

Look-ahead: Autarky or Conflict on 2-SAT Formulae Lookahead techniques can solve 2-SAT formulae in polynomial time. Each lookahead on l results:

  • 1. in an autarky: forcing l to be true
  • 2. in a conflict: forcing l to be false

SAT Game

by Olivier Roussel http://www.cs.utexas.edu/~marijn/game/2SAT

25 / 29

slide-74
SLIDE 74

Look-ahead: 1-Autarky learning Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6)

26 / 29

slide-75
SLIDE 75

Look-ahead: 1-Autarky learning Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0}

26 / 29

slide-76
SLIDE 76

Look-ahead: 1-Autarky learning Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0}

26 / 29

slide-77
SLIDE 77

Look-ahead: 1-Autarky learning Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0}

26 / 29

slide-78
SLIDE 78

Look-ahead: 1-Autarky learning Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0, x3=1}

26 / 29

slide-79
SLIDE 79

Look-ahead: 1-Autarky learning Flearning := (x1 ∨ x3 ∨ x4) ∧ (x1 ∨ x2 ∨ x3) ∧ (x1 ∨ x2) ∧ (x1 ∨ x3 ∨ x6) ∧ (x1 ∨ x4 ∨ x5) ∧ (x1 ∨ x6) ∧ (x4 ∨ x5 ∨ x6) ∧ (x5 ∨ x6) ϕ = {x2=0, x1=0, x6=0, x3=1} (local) 1-autarky resolvents: (x2 ∨ x4) and (x2 ∨ x5)

26 / 29

slide-80
SLIDE 80

DPLL Procedure Look-ahead Architecture Look-ahead Learning Autarky Reasoning Tree-based Look-ahead

27 / 29

slide-81
SLIDE 81

Tree-based Look-ahead

Given a formula F which includes the clauses (a ∨ b) and (a ∨ c), tree-based look-ahead can reduce the look-ahead costs. F a b c

2 3 4 5 1 6

implication action 1 propagate a 2 propagate b 3 backtrack b 4 propagate c 5 backtrack c 6 backtrack a

28 / 29

slide-82
SLIDE 82

Lookahead Techniques

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

29 / 29