grasp-an efficient sat solver pankaj chauhan. 6/19/201515-398: grasp and chaff2 what is sat? given a...

31
GRASP-an efficient SAT solver Pankaj Chauhan

Post on 20-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

GRASP-an efficient SAT solver

Pankaj Chauhan

04/18/23 15-398: GRASP and Chaff 2

What is SAT? Given a propositional formula in

CNF, find an assignment to boolean variables that makes the formula true!

E.g.1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

A = {x1=0, x2=1, x3=0, x4=1}

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

A = {x1=0, x2=1, x3=0, x4=1}

SATisfying assignment!

04/18/23 15-398: GRASP and Chaff 3

What is SAT? Solution 1: Search through all

assignments! n variables 2n possible assignments,

explosion!

SAT is a classic NP-Complete problem, solve SAT and P=NP!

04/18/23 15-398: GRASP and Chaff 4

Why SAT? Fundamental problem from

theoretical point of view Numerous applications

CAD, VLSI Optimization Model Checking and other type of

formal verification AI, planning, automated deduction

04/18/23 15-398: GRASP and Chaff 5

Outline Terminology Basic Backtracking Search GRASP Pointers to future work

Please interrupt me if anything is not clear!

04/18/23 15-398: GRASP and Chaff 6

Terminology CNF formula

x1,…, xn: n variables 1,…, m: m clauses

Assignment A Set of (x,v(x)) pairs |A| < n partial assignment {(x1,0), (x2,1), (x4,1)} |A| = n complete assignment {(x1,0), (x2,1), (x3,0), (x4,1)} |A= 0 unsatisfying assignment {(x1,1), (x4,1)} |A= 1 satisfying assignment {(x1,0), (x2,1), (x4,1)}

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

A = {x1=0, x2=1, x3=0, x4=1}

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

A = {x1=0, x2=1, x3=0, x4=1}

04/18/23 15-398: GRASP and Chaff 7

Terminology Assignment A (contd.)

|A= X unresolved {(x1,0), (x2,0), (x4,1)} An assignment partitions the

clause database into three classes Satisfied, unsatisfied, unresolved

Free literals: unassigned literals of a clause

Unit clause: #free literals = 1

04/18/23 15-398: GRASP and Chaff 8

Basic Backtracking Search Organize the search in the form

of a decision tree Each node is an assignment, called

decision assignment Depth of the node in the decision

tree decision level (x) x=v@d x is assigned to v at decision

level d

04/18/23 15-398: GRASP and Chaff 9

Basic Backtracking Search Iterate through:

1. Make new decision assignments to explore new regions of search space

2. Infer implied assignments by a deduction process. May lead to unsatisfied clauses, conflict! The assignment is called conflicting assignment.

3. Conflicting assignments leads to backtrack to discard the search subspace

04/18/23 15-398: GRASP and Chaff 10

Backtracking Search in Action

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

x1

x1 = 0@1

{(x1,0), (x2,0), (x3,1)}

x2 x2 = 0@2

{(x1,1), (x2,0), (x3,1) , (x4,0)}

x1 = 1@1

x3 = 1@2

x4 = 0@1 x2 = 0@1

x3 = 1@1

No backtrack in this example!

04/18/23 15-398: GRASP and Chaff 11

Backtracking Search in Action

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

4 = (x1 x2 x3)

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

4 = (x1 x2 x3)

Add a clause

x4 = 0@1

x2 = 0@1

x3 = 1@1

conflict

{(x1,0), (x2,0), (x3,1)}

x2

x2 = 0@2 x3 = 1@2

x1 = 0@1

x1

x1 = 1@1

04/18/23 15-398: GRASP and Chaff 12

Davis-Putnam revisited

Deduction

Decision

Backtrack

04/18/23 15-398: GRASP and Chaff 13

GRASP GRASP is Generalized seaRch

Algorithm for the Satisfiability Problem (Silva, Sakallah, ’96)

Features: Implication graphs for BCP and

conflict analysis Learning of new clauses Non-chronological backtracking!

04/18/23 15-398: GRASP and Chaff 14

GRASP search template

04/18/23 15-398: GRASP and Chaff 15

GRASP Decision Heuristics

Procedure decide() Choose the variable that satisfies

the most #clauses == max occurences as unit clauses at current decision level

Other possibilities exist

04/18/23 15-398: GRASP and Chaff 16

GRASP Deduction Boolean Constraint Propagation using

implication graphsE.g. for the clause = (x y), if y=1, then

we must have x=1 For a variable x occuring in a clause ,

assignment 0 to all other literals is called antecedent assignment A(x)

E.g. for = (x y z), A(x) = {(y,0), (z,1)}, A(y) = {(x,0),(z,1)}, A(z) = {(x,0), (y,0)}

Variables directly responsible for forcing the value of x Antecedent assignment of a decision variable is empty

04/18/23 15-398: GRASP and Chaff 17

Implication Graphs Nodes are variable assignments x=v(x)

(decision or implied) Predecessors of x are antecedent

assignments A(x) No predecessors for decision assignments!

Special conflict vertices have A() = assignments to vars in the unsatisfied clause

Decision level for an implied assignment is(x) = max{(y)|(y,v(y))A(x)}

04/18/23 15-398: GRASP and Chaff 18

Example Implication Graph

1 = (x1 x2)

2 = (x1 x3 x9)

3 = (x2 x3 x4)

4 = (x4 x5 x10)

5 = (x4 x6 x11)

6 = (x5 x6)

7 = (x1 x7 x12)

8 = (x1 x8)

9 = (x7 x8 x13)

1 = (x1 x2)

2 = (x1 x3 x9)

3 = (x2 x3 x4)

4 = (x4 x5 x10)

5 = (x4 x6 x11)

6 = (x5 x6)

7 = (x1 x7 x12)

8 = (x1 x8)

9 = (x7 x8 x13)

Current truth assignment: {x9=0@1 ,x10=0@3, x11=0@3, x12=1@2, x13=1@2}

Current decision assignment: {x1=1@6}

6

6

conflict

x9=0@1

x1=1@6

x10=0@3

x11=0@3

x5=1@64

4

5

5 x6=1@62

2

x3=1@6

1

x2=1@6

3

3

x4=1@6

04/18/23 15-398: GRASP and Chaff 19

GRASP Deduction Process

04/18/23 15-398: GRASP and Chaff 20

GRASP Conflict Analysis After a conflict arises, analyze the

implication graph at current decision level

Add new clauses that would prevent the occurrence of the same conflict in the future Learning

Determine decision level to backtrack to, might not be the immediate one Non-chronological backtrack

04/18/23 15-398: GRASP and Chaff 21

Learning Determine the assignment that

caused the conflict, negation of this assignment is called conflict induced clause C() The conjunct of this assignment is

necessary condition for So adding C() will prevent the

occurrence of again

04/18/23 15-398: GRASP and Chaff 22

Learning Find C() by a backward traversal

of the IG, find the roots of the IG in the transitive fanin of

For our example IG, C() = (x1 x9 x10 x11)

04/18/23 15-398: GRASP and Chaff 23

For any node of an IG x, partition A(x) into

(x) = {(y,v(y)) A(x)|(y)<(x)}

(x) = {(y,v(y)) A(x)|(y)=(x)}

Conflicting assignment AC() = causesof(), where

Learning (some math)

(x,v(x)) if A(x) =

(x) [ causesof(y) ]o/w(y,v(y)) (x)

causesof(x) =

04/18/23 15-398: GRASP and Chaff 24

Learning (some math) Deriving conflicting clause C()

from the conflicting assignment AC() is straight forward

For our IG,

C() = xv(x)

(x,v(x)) AC()

AC() = {x1=1@6, x9 =0@1, x10 = 0@3, x11 = 0@3}

04/18/23 15-398: GRASP and Chaff 25

Learning Unique implication points (UIPs) of

an IG also provide conflict clauses Learning of new clauses increases

clause database size Heuristically delete clauses based

on a user parameter If size of learned clause > parameter,

don’t include it

04/18/23 15-398: GRASP and Chaff 26

BacktrackingFailure driven assertions (FDA):

If C() involves current decision variable, then after addition, it becomes unit clause, so different assignment for the current variable is immediately tried.

In our IG, after erasing the assignment at level 6, C() becomes a unit clause x1

This immediately implies x1=0

04/18/23 15-398: GRASP and Chaff 27

Continued IG

9

9

x12=1@2

x7=1@6

x8=1@6

x1=0@6

x11=0@3

x10=0@3

x9=0@1

7

7

8

C() C()

C() x13=1@2

9

Due to C()

x1

Decision level

3

5

6

04/18/23 15-398: GRASP and Chaff 28

Backtracking

Conflict Directed Backtracking Now deriving a new IG after setting

x1=0 by FDA, we get another conflict ’

Non-chronological backtrack to decision level 3, because backtracking to any level 5, 4 would generate the same conflict ’

04/18/23 15-398: GRASP and Chaff 29

Conflict Directed Backtracking contd.

Backtrack level is given by

= d-1 chronological backtrack < d-1 non-chronological backtrack

AC(’) = {x9 =0@1, x10 = 0@3, x11 = 0@3, x12=1@2, x13=1@2}

C() = (x9 x10 x11 x12 x13)

Backtracking

= max{(x)|(x,v(x))AC(’)} = max{(x)|(x,v(x))AC(’)}

04/18/23 15-398: GRASP and Chaff 30

Procedure Diagnose()

04/18/23 15-398: GRASP and Chaff 31

Is that all? Huge overhead for constraint

propagation Better decision heuristics Better learning, problem specific Better engineering!

Chaff