Lookahead Techniques

Post on 02-Dec-2021

3 views 0 download

transcript

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 Look-ahead

2 / 29

DPLL Procedure

Look-ahead Architecture

Look-ahead Learning

Autarky Reasoning

Tree-based Look-ahead

3 / 29

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

DPLL: Example

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

5 / 29

DPLL: Example

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

x3

0 1

5 / 29

DPLL: Example

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

x3

0 1

x2

x1 x3

0 1

0 1 1 0

5 / 29

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

Look-ahead: Definition

DPLL with selection of (effective) decision variablesby look-aheads on variables

7 / 29

Look-ahead: Definition

DPLL with selection of (effective) decision variablesby look-aheads on variables

Look-ahead:

Assign a variable to a truth value

7 / 29

Look-ahead: Definition

DPLL with selection of (effective) decision variablesby look-aheads on variables

Look-ahead:

Assign a variable to a truth value

Simplify the formula

7 / 29

Look-ahead: Definition

DPLL with selection of (effective) decision variablesby look-aheads on variables

Look-ahead:

Assign a variable to a truth value

Simplify the formula

Measure the reduction

7 / 29

Look-ahead: Definition

DPLL with selection of (effective) decision variablesby look-aheads on variables

Look-ahead:

Assign a variable to a truth value

Simplify the formula

Measure the reduction

Learn if possible

7 / 29

Look-ahead: Definition

DPLL with selection of (effective) decision variablesby 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

DPLL Procedure

Look-ahead Architecture

Look-ahead Learning

Autarky Reasoning

Tree-based Look-ahead

8 / 29

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

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

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

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

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

Look-ahead: Properties

Very expensive

10 / 29

Look-ahead: Properties

Very expensive

Effective compared to cheap heuristics

10 / 29

Look-ahead: Properties

Very expensive

Effective compared to cheap heuristics

Detection of failed literals (and more)

10 / 29

Look-ahead: Properties

Very expensive

Effective compared to cheap heuristics

Detection of failed literals (and more)

Strong on random k-SAT formulae

10 / 29

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

DEMO

11 / 29

Look-ahead: Reduction heuristics

Number of satisfied clauses

12 / 29

Look-ahead: Reduction heuristics

Number of satisfied clauses

Number of implied variables

12 / 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

Look-ahead: Architecture

xa

xb xc

0 1

?

1 0 0

DPLL

x1 x2 x3 x4

FLA

0

9

1

9

0

13

1

6

0 1

7

0

10

1

8

LookAhead

H(xi )

13 / 29

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

DPLL Procedure

Look-ahead Architecture

Look-ahead Learning

Autarky Reasoning

Tree-based Look-ahead

15 / 29

Local Learning

Look-ahead solvers do not perform global learning,in contrast to contrast to conflict-driven clauselearning (CDCL) solvers

Instead, look-ahead solvers learn locally:Learn small (typically unit or binary) clauses that are validfor the current node and lower in the DPLL tree

Locally learnt clauses have to be removed duringbacktracking

16 / 29

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1results 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: assigntwo literals and learn a binary clause in case of a conflict.

17 / 29

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1results 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: assigntwo 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

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1results 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: assigntwo 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

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1results 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: assigntwo 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

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1results 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: assigntwo 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

Failed Literals and Double Look-aheads

A literal l is called a failed literal if the look-ahead on l = 1results 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: assigntwo 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

Hyper Binary Resolution [Bacchus 2002]

Definition (Hyper Binary Resolution Rule)

(x ∨ x1 ∨ x2 ∨ · · · ∨ xn) (x̄1 ∨ x ′) (x̄2 ∨ x ′) . . . (x̄n ∨ x ′)

(x ∨ x ′)

binary edge

hyper edge

hyper binary edge

x̄ ′

x

x̄1

. . .x̄2

x̄n

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

St̊almarck’s Method

In short, St̊almarck’s Method is a procedure that generalizesthe concept of necessary assignments.

For each variable x , (Simplify(F |x) ∩ Simplify(F |x)) \ F isadded 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 forvariables 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 befinished in reasonable time.

21 / 29

DPLL Procedure

Look-ahead Architecture

Look-ahead Learning

Autarky Reasoning

Tree-based Look-ahead

22 / 29

Look-ahead: Autarky definition

An autarky is a partial assignment that satisfies all

clauses that are “touched” by the assignment

23 / 29

Look-ahead: Autarky definition

An autarky is a partial assignment that satisfies all

clauses that are “touched” by the assignmenta pure literal is an autarky

23 / 29

Look-ahead: Autarky definition

An autarky is a partial assignment that satisfies all

clauses that are “touched” by the assignmenta pure literal is an autarky

each satisfying assignment is an autarky

23 / 29

Look-ahead: Autarky definition

An autarky is a partial assignment that satisfies all

clauses that are “touched” by the assignmenta pure literal is an autarky

each satisfying assignment is an autarky

the remaining formula is satisfiability equivalentto the original formula

23 / 29

Look-ahead: Autarky definition

An autarky is a partial assignment that satisfies all

clauses that are “touched” by the assignmenta pure literal is an autarky

each satisfying assignment is an autarky

the remaining formula is satisfiability equivalentto the original formula

An 1-autarky is a partial assignment that

satisfies all touched clauses except one

23 / 29

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

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

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

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

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

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

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

Look-ahead: Autarky or Conflict on 2-SAT Formulae

Lookahead techniques can solve 2-SAT formulae inpolynomial 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

Look-ahead: Autarky or Conflict on 2-SAT Formulae

Lookahead techniques can solve 2-SAT formulae inpolynomial 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 Gameby Olivier Roussel

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

25 / 29

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

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

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

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

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

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

DPLL Procedure

Look-ahead Architecture

Look-ahead Learning

Autarky Reasoning

Tree-based Look-ahead

27 / 29

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

Lookahead Techniques

Marijn J.H. Heule

http://www.cs.cmu.edu/~mheule/15816-f19/

Automated Reasoning and Satisfiability, September 26, 2019

29 / 29