Title: GRASP-an efficient SAT solver
1GRASP-an efficient SAT solver
2What 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 x10, x21, x30, x41
SATisfying assignment!
3What is SAT?
- Solution 1 Search through all assignments!
- n variables ? 2n possible assignments, explosion!
- SAT is a classic NP-Complete problem, solve SAT
and PNP!
4Why 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
5Outline
- Terminology
- Basic Backtracking Search
- GRASP
- Pointers to future work
Please interrupt me if anything is not clear!
6Terminology
- CNF formula ?
- x1,, xn n variables
- ?1,, ?m m clauses
- Assignment A
- Set of (x,v(x)) pairs
- A lt 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 x10, x21, x30, x41
7Terminology
- 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
8Basic 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) - xv_at_d ? x is assigned to v at decision level d
9Basic 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
10Backtracking Search in Action
?1 (x2 ? x3) ?2 (?x1 ? ?x4) ?3 (?x2 ? x4)
x1 1_at_1
? x4 0_at_1
? x2 0_at_1
? x3 1_at_1
? x3 1_at_2
(x1,1), (x2,0), (x3,1) , (x4,0)
(x1,0), (x2,0), (x3,1)
No backtrack in this example!
11Backtracking Search in Action
Add a clause
?1 (x2 ? x3) ?2 (?x1 ? ?x4) ?3 (?x2 ?
x4) ?4 (?x1 ? x2 ? ?x3)
? x4 0_at_1
? x2 0_at_1
? x3 1_at_1
? x3 1_at_2
conflict
(x1,0), (x2,0), (x3,1)
12Davis-Putnam revisited
Deduction
Decision
Backtrack
13GRASP
- 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!
14GRASP search template
15GRASP Decision Heuristics
- Procedure decide()
- Choose the variable that satisfies the most
clauses max occurences as unit clauses at
current decision level - Other possibilities exist
16GRASP Deduction
- Boolean Constraint Propagation using implication
graphs - E.g. for the clause ? (x ? ?y), if y1, then
we must have x1 - 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
17Implication Graphs
- Nodes are variable assignments xv(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)
18Example Implication Graph
Current truth assignment x90_at_1 ,x100_at_3,
x110_at_3, x121_at_2, x131_at_2 Current decision
assignment x11_at_6
x100_at_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)
x11_at_6
x90_at_1
x110_at_3
19GRASP Deduction Process
20GRASP 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
21Learning
- 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
22Learning
- 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)
23Learning (some math)
- For any node of an IG x, partition A(x) into
- ?(x) (y,v(y)) ?A(x)?(y)lt?(x)
- ?(x) (y,v(y)) ?A(x)?(y)?(x)
- Conflicting assignment AC(?) causesof(?), where
24Learning (some math)
- Deriving conflicting clause ?C(?) from the
conflicting assignment AC(?) is straight forward - For our IG,
AC(?) x11_at_6, x9 0_at_1, x10 0_at_3, x11 0_at_3
25Learning
- 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 gt parameter, dont
include it
26Backtracking
- 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 x10
27Continued IG
Decision level
3
x81_at_6
x90_at_1
?8
?C(?)
?9
x100_at_3
5
?
x131_at_2
x10_at_6
?C(?)
?9
?9
?7
?C(?)
x110_at_3
x71_at_6
x1
?7
6
x121_at_2
Due to ?C(?)
?
?
28Backtracking
- Conflict Directed Backtracking
- Now deriving a new IG after setting x10 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 ?
29Backtracking
- Conflict Directed Backtracking contd.
- Backtrack level is given by
- ? d-1 chronological backtrack
- ? lt d-1 non-chronological backtrack
AC(?) x9 0_at_1, x10 0_at_3, x11 0_at_3, x121_at_2,
x131_at_2 ?C(?) (x9 ? x10 ? x11 ? ? x12 ? ?
x13)
? max?(x)(x,v(x))?AC(?)
30Procedure Diagnose()
31Is that all?
- Huge overhead for constraint propagation
- Better decision heuristics
- Better learning, problem specific
- Better engineering!
- Chaff