310 likes | 448 Views
GRASP-an efficient SAT solver. Pankaj Chauhan. What is SAT?. Given a propositional formula in CNF, find an assignment to boolean variables that makes the formula true! E.g. 1 = (x 2 x 3 ) 2 = ( x 1 x 4 ) 3 = ( x 2 x 4 ) A = {x 1 =0, x 2 =1, x 3 =0, x 4 =1}.
E N D
GRASP-an efficient SAT solver Pankaj Chauhan
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} SATisfying assignment! 15-398: GRASP and Chaff
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! 15-398: GRASP and Chaff
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 15-398: GRASP and Chaff
Outline • Terminology • Basic Backtracking Search • GRASP • Pointers to future work Please interrupt me if anything is not clear! 15-398: GRASP and Chaff
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 unsatisfyingassignment {(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} 15-398: GRASP and Chaff
Terminology • Assignment A (contd.) • |A= X unresolved {(x1,0), (x2,0), (x4,1)} • An assignment partitions the clause databaseinto three classes • Satisfied, unsatisfied, unresolved • Free literals: unassigned literals of a clause • Unitclause: #free literals = 1 15-398: GRASP and Chaff
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 xis assigned tovat decision leveld 15-398: GRASP and Chaff
Basic Backtracking Search • Iterate through: • Make new decision assignments to explore new regions of search space • Infer implied assignments by a deduction process. May lead to unsatisfied clauses, conflict! The assignment is called conflicting assignment. • Conflicting assignments leads to backtrack to discard the search subspace 15-398: GRASP and Chaff
x1 x1 = 0@1 x2 x2 = 0@2 Backtracking Search in Action 1 = (x2 x3) 2 = (x1 x4) 3 = (x2 x4) x1 = 1@1 x4 = 0@1 x2 = 0@1 x3 = 1@1 x3 = 1@2 {(x1,1), (x2,0), (x3,1) , (x4,0)} {(x1,0), (x2,0), (x3,1)} No backtrack in this example! 15-398: GRASP and Chaff
x1 x1 = 0@1 x1 = 1@1 x2 x2 = 0@2 Backtracking Search in Action Add a clause 1 = (x2 x3) 2 = (x1 x4) 3 = (x2 x4) 4 = (x1 x2 x3) x4 = 0@1 x2 = 0@1 x3 = 1@1 x3 = 1@2 conflict {(x1,0), (x2,0), (x3,1)} 15-398: GRASP and Chaff
Davis-Putnam revisited Deduction Decision Backtrack 15-398: GRASP and Chaff
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! 15-398: GRASP and Chaff
GRASP search template 15-398: GRASP and Chaff
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 15-398: GRASP and Chaff
GRASP Deduction • Boolean Constraint Propagation using implication graphs E.g. for the clause = (x y), ify=1, then we must havex=1 • For a variable xoccuring in a clause , assignment 0 to all other literals is calledantecedent assignmentA(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 ofx • Antecedent assignment of a decision variable is empty 15-398: GRASP and Chaff
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)} 15-398: GRASP and Chaff
4 x2=1@6 x5=1@6 1 4 3 6 x4=1@6 conflict 6 3 2 5 2 5 x6=1@6 x3=1@6 Example Implication Graph Current truth assignment: {x9=0@1 ,x10=0@3, x11=0@3, x12=1@2, x13=1@2} Current decision assignment: {x1=1@6} x10=0@3 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) x1=1@6 x9=0@1 x11=0@3 15-398: GRASP and Chaff
GRASP Deduction Process 15-398: GRASP and Chaff
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 15-398: GRASP and Chaff
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 occurrenceof again 15-398: GRASP and Chaff
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) 15-398: GRASP and Chaff
(x,v(x)) if A(x) = causesof(x) = (x) [ causesof(y)]o/w (y,v(y)) (x) Learning (some math) • 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 15-398: GRASP and Chaff
C() = xv(x) (x,v(x)) AC() Learning (some math) • Deriving conflicting clause C()from the conflicting assignment AC() is straight forward • For our IG, AC() = {x1=1@6, x9 =0@1, x10 = 0@3, x11 = 0@3} 15-398: GRASP and Chaff
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 15-398: GRASP and Chaff
Backtracking Failure 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 15-398: GRASP and Chaff
Continued IG Decision level 3 x8=1@6 x9=0@1 C() 8 9 x10=0@3 5 ’ x13=1@2 x1=0@6 C() 9 9 C() 7 x11=0@3 x7=1@6 x1 7 6 x12=1@2 Due to C() ’ 15-398: GRASP and Chaff
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 ’ 15-398: GRASP and Chaff
Backtracking Conflict Directed Backtracking contd. • Backtrack level is given by • = d-1chronological backtrack • < d-1non-chronological backtrack AC(’) = {x9 =0@1, x10 = 0@3, x11 = 0@3, x12=1@2, x13=1@2} C() = (x9 x10 x11 x12 x13) = max{(x)|(x,v(x))AC(’)} 15-398: GRASP and Chaff
Procedure Diagnose() 15-398: GRASP and Chaff
Is that all? • Huge overhead for constraint propagation • Better decision heuristics • Better learning, problem specific • Better engineering! Chaff 15-398: GRASP and Chaff