Logic Synthesis

1 / 12

# Logic Synthesis - PowerPoint PPT Presentation

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

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## Logic Synthesis

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### 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