120 likes | 438 Views
Logic Synthesis. CNF Satisfiability. CNF Formula’s. Product of Sum (POS) representation of Boolean function Describes solution using a set of constraints very handy in many applications because new constraints can just be added to the list of existing constraints very common in AI community
E N D
Logic Synthesis CNF Satisfiability
CNF Formula’s • Product of Sum (POS) representation of Boolean function • Describes solution using a set of constraints • very handy in many applications because new constraints can just be added to the list of existing constraints • very common in AI community • Example: • j = ( a+^b+ c) (^a+ b+ c) ( a+^b+^c) ( a+ b+ c) • SAT on CNF (POS) Û Tautology on DNF (SOP)
Circuit versus CNF • Naive conversion of circuit to CNF: • multiply out expressions of circuit until two level structure • Example: y = x1Å x2Å x2Å ... Å xn(Parity function) • circuit size is linear in the number of variables Å • generated chess-board Karnaugh map • CNF (or DNF) formula has 2n-1 terms (exponential in the # vars) • Better approach: • introduce one variable per circuit vertex • formulate the circuit as a conjunction of constraints imposed on the vertex values by the gates • uses more variables but size of formula is linear in the size of the circuit
4 1 7 9 2 5 0 8 6 3 Example Single gate: a (^a+^b+ c)(a+^c)(b+^c) c b Circuit of connected gates: (^1+2+4)(1+^4)(^2+^4) (^2+^3+5)(2+^5)(3+^5) (2+^3+6)(^2+^6)(3+^6) (^4+^5+7)(4+^7)(5+^7) (5+6+8)(^5+^8)(^6+^8) (7+8+9)(^7+^9)(^8+^9) (^9) Justify to “0”
(a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) 1 (a + b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a + b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + c) (a+ b + c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) 2 (a + b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a + b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + c) (a + b + ¬c) (a+ b + c) (a+ b + ¬c) (a+ b + c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) 3 (¬a + b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a + b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (a+ b + ¬c) (¬a + b + ¬c) (a+ b + ¬c) (¬a+ b + ¬c) (a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (¬a+ b + ¬c) (¬a+ b + ¬c) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (¬a+ b + ¬c) (¬a + b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) 4 (a + c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a + c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (¬a+ b + ¬c) (¬a+ b + ¬c) (a + c + d) (a+ c + d) (¬a+ b + ¬c) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (a+ c + d) (a+ c + d) (a + c + d) (a + c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) 5 (¬a + c + d) (¬a+ c + d) (¬a+ c + d) (¬a + c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a + c + d) (a+ c + d) (a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a + c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (a+ c + d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a + c + d) (¬a + c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) 6 (¬a + c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a + c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + d) (¬a+ c + d) (¬a + c + ¬d) (¬a+ c + ¬d) (¬a+ c + d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a + c + ¬d) (¬a+ c + ¬d) (¬a + c + ¬d) (¬a+ c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬a + c + ¬d) (¬a + c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) 7 (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬a+ c + ¬d) (¬b + ¬c + ¬d) (¬a+ c + ¬d) (¬b+ ¬c + ¬d) (¬a+ c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) 8 (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + ¬d) (¬b + ¬c + d) (¬b + ¬c + d) (¬b + ¬c + d) (¬b + ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) Basic Case Splitting Algorithm a b b c c c d d d d d Source: Karem A. Sakallah, Univ. of Michigan
0 1 x 1 x x 1 0 0 1 x x 0 x 0 0 0 0 x x 0 0 1 0 1 1 x a c b Implications in CNF • Implications in a CNF formula are caused by unit clauses • unit clause is a CNF term for which all variables except one are assigned • the value of that clause can be implied immediately Example: (a+^b+c) (a=0)(b=1)Þ(c=1) • No implications in circuit: • All clauses satisfied: • Not all satisfies (How do we avoid exploring that part of the circuit?) (^a+^b+c)(a+^c)(b+^c)
0 1 1 1 0 x x 1 0 x x 1 x x x 1 x x 1 0 0 x x 0 1 x 1 x 0 x 0 1 1 Example a (^a+^b+ c) (a+^c) (b+^c) c b Implications:
1 (a + b + c) (a + b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) 2 (a + b + ¬c) (a + b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) 3 (¬a + b + ¬c) (¬a + b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) 4 (a + c + d) (a + c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) 5 (¬a + c + d) (¬a + c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) 6 (¬a + c + ¬d) (¬a + c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) 7 (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) 6 (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) 8 6 5 8 4 5 7 3 (¬b + ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) a b a a (¬b + ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) 8 6 6 5 d d d c d 7 3 5 4 b c c c 8 6 6 Case Splitting with Implications a b b c c Source: Karem A. Sakallah, Univ. of Michigan
Implementation • Clauses are stores in array • Track sensitivity of clauses for changes: • all literals but one assigned -> implication • all literals but two assigned -> clause is sensitive to a change of either literal • all other clauses are insensitive and do not need to be observed • Learning: • learned implications are added to the CNF formula as additional clauses • limit the size of the clause • limit the “lifetime” of a clause, will be removed after some time • Non-chronological back-tracking • similar to circuit case
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 (a + b + c) (a + b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) (¬b+ ¬c) (¬b+ ¬c) (¬b+ ¬c) (¬b+ ¬c) (¬b+ ¬c) (¬b+ ¬c) (¬b+ ¬c) (¬b + ¬c) (¬b+ ¬c) (¬b+ ¬c) (¬b+ ¬c) (¬b + ¬c) (¬b+ ¬c) (¬b+ ¬c) (a+ b + c) (a+ b + c) (a+ b + c) (a+ b + c) 2 10 10 10 10 10 10 10 10 10 10 (a + b + ¬c) (a + b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (¬a+ ¬b) (¬a+ ¬b) (¬a+ ¬b) (¬a+ ¬b) (¬a+ ¬b) (¬a+ ¬b) (¬a + ¬b) (¬a+ ¬b) (¬a+ ¬b) (¬a+ ¬b) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) (a+ b + ¬c) 3 11 11 11 11 11 11 (¬a + b + ¬c) (¬a + b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a) (¬a) (¬a) (¬a) (¬a) (¬a) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) (¬a+ b + ¬c) 4 (a + c + d) (a + c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) (a+ c + d) 6 (a+ c + d) (a+ c + d) 6 4 11 5 5 5 a (¬a + c + d) (¬a + c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) a a (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) (¬a+ c + d) 3 6 9 6 (¬a + c + ¬d) (¬a + c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) (¬a+ c + ¬d) c b 5 (¬a+ c + ¬d) (¬a+ c + ¬d) d (¬a+ c + ¬d) (¬a+ c + ¬d) 6 9 4 3 5 10 b c d d c b 6 7 (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + ¬d) (¬b+ ¬c + ¬d) (¬b+ ¬c + ¬d) 6 8 8 7 (¬b + ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) (¬b + ¬c + d) b (¬b + ¬c + d) (¬b + ¬c + d) (¬b+ ¬c + d) (¬b+ ¬c + d) 9 10 8 (¬b + ¬c) (¬a+ ¬b) d 7 c 8 Conflict-based Learning a a® ¬j ß j ® (¬a) ab® ¬j ß j ® (¬a + ¬b) bc® ¬j ß j ® (¬b + ¬c) b b c Source: Karem A. Sakallah, Univ. of Michigan
Conflict-based Learning • Important detail for cut selection: • During implication processing, record decision level for each implication • At conflict, select earliest cut such that exactly one node of the implication graph lies on current decision level • Either decision variable itself • Or UIP (“unique implication point”) that represents a dominator node in conflict graph • By selecting such cut, implication processing will automatically flip decision variable (or UIP variable) to its complementary value
Further Improvements • Random restarts: • stop after a given number of backtracks • start search again with modified ordering heuristic • keep learned structures !!! • very effective for satisfiable formulas but often also effective for unsat formulas • Learning of equivalence relations: • (a Þ b) Ù (b Þ a) Þ (a = b) • very powerful for formal equivalence checking