1 / 12

Logic Synthesis

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

bernad
Télécharger la présentation

Logic Synthesis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Logic Synthesis CNF Satisfiability

  2. 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)

  3. 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. 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”

  5. (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

  6. 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)

  7. 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:

  8. 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

  9. 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

  10. 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

  11. 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

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

More Related