boolean solving - loria · prince instructs you either to invite peru or to exclude qatar . the...

Post on 02-Oct-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1/37

Boolean Solving

Sophie Tourret & Pascal Fontaine & Christophe Ringeissen

Univ. of Lorraine, CNRS, Inria, LORIA

Procedures de decision et verification de programmes: Lecture 5

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)

I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)I Boolean propagation

I Clause representationI Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)I Boolean propagationI Clause representation

I Conflict analysis and non-chronological backtracking

2/37

Introduction (1/2)

I SAT: NP-complete (NPC) problem

I No efficient solution for all cases on sequential computers(or P = NP)

I Truth tables: how many lines for n variables?

I Many problems require many variables

I Nowadays: 106 Boolean variables, 107 clauses (2(106) = 10301029)

I SAT4J, MiniSAT, Glucose, Crypto-MiniSAT, PicoSAT,. . .

Today’s lecture

I history: truth tables, DPLL (Davis, Putnam, Logemann,Loveland)

I now: CDCL (Conflict Driven Clause Learning)I Boolean propagationI Clause representationI Conflict analysis and non-chronological backtracking

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

3/37

Introduction (2/2)

Satisfiability checking for profit:

I Verification (model checking, formal proofs,. . . )

I Maths (e.g. Erdos discrepancy problem)

I Planning problems

I Dependency checking (e.g. Eclipse)

I Configuration selection

I Circuit placement on silicon die

I . . .

Propositional satisfiability checking problem (SAT) is NPC.Any NPC problem can be translated polynomially into SAT

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logic

I Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)

I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)

I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )

I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

4/37

Prerequisites / Notations

I Prerequisite: knowledge of propositional and first-order logicI Boolean logic:

I Boolean (propositional) variable (v), literal (e.g. v, ¬v)¬v = v, v = ¬v

I clause (e.g. a ∨ ¬b ∨ c)I cube (e.g. a ∧ ¬b ∧ c)I formula (¬, ∧, ∨, ⇒, ≡, . . . )I interpretation, (un)satisfiable formula, valid formula

I Unit clause: clause with one literal only

I Empty clause: �, unsatisfiable

I Resolution rule:C ∨ ` C ′ ∨ `

C ∨ C ′

5/37

A propositional problem (1/2)

You are chief of protocol for the embassy ball. The crownprince instructs you either to invite Peru or to excludeQatar . The queen asks you to invite either Qatar or Ro-mania or both. The king, in a spiteful mood, wants tosnub either Romania or Peru or both. Is there a guest listthat will satisfy the whims of the entire royal family?

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

5/37

A propositional problem (1/2)

You are chief of protocol for the embassy ball. The crownprince instructs you either to invite Peru or to excludeQatar . The queen asks you to invite either Qatar or Ro-mania or both. The king, in a spiteful mood, wants tosnub either Romania or Peru or both. Is there a guest listthat will satisfy the whims of the entire royal family?

(P ∨ ¬Q)

∧ (Q ∨R) ∧ (¬R ∨ ¬P )

5/37

A propositional problem (1/2)

You are chief of protocol for the embassy ball. The crownprince instructs you either to invite Peru or to excludeQatar . The queen asks you to invite either Qatar or Ro-mania or both. The king, in a spiteful mood, wants tosnub either Romania or Peru or both. Is there a guest listthat will satisfy the whims of the entire royal family?

(P ∨ ¬Q) ∧ (Q ∨R)

∧ (¬R ∨ ¬P )

5/37

A propositional problem (1/2)

You are chief of protocol for the embassy ball. The crownprince instructs you either to invite Peru or to excludeQatar . The queen asks you to invite either Qatar or Ro-mania or both. The king, in a spiteful mood, wants tosnub either Romania or Peru or both. Is there a guest listthat will satisfy the whims of the entire royal family?

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0

0

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

0

1 1 0

1

1 1 1

0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q

1 -2 0

Q ∨R

2 3 0

¬R ∨ ¬P

-3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0

0

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

0

1 1 0

1

1 1 1

0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q

1 -2 0

Q ∨R

2 3 0

¬R ∨ ¬P

-3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0

0

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

0

1 1 0

1

1 1 1

0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q

1 -2 0

Q ∨R

2 3 0

¬R ∨ ¬P

-3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q

1 -2 0

Q ∨R

2 3 0

¬R ∨ ¬P

-3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q

1 -2 0

Q ∨R

2 3 0

¬R ∨ ¬P

-3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q

1 -2 0

Q ∨R

2 3 0

¬R ∨ ¬P

-3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q 1 -2 0

Q ∨R 2 3 0

¬R ∨ ¬P -3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q 1 -2 0

Q ∨R 2 3 0

¬R ∨ ¬P -3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q 1 -2 0

Q ∨R 2 3 0

¬R ∨ ¬P -3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q 1 -2 0

Q ∨R 2 3 0

¬R ∨ ¬P -3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q 1 -2 0

Q ∨R 2 3 0

¬R ∨ ¬P -3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬R

No more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q 1 -2 0

Q ∨R 2 3 0

¬R ∨ ¬P -3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬R

No more solutions

6/37

A propositional problem (2/2)

ϕ =def (P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Truth table for ϕ

P Q R ϕ

0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 01 0 1 01 1 0 11 1 1 0

SAT checker

DIMACS format

Vars → numbers: P → 1, Q→ 2, R→ 3Literals: P → 1, ¬P → −1

p cnf 3 3

P ∨ ¬Q 1 -2 0

Q ∨R 2 3 0

¬R ∨ ¬P -3 -1 0

P ∨Q ∨ ¬R 1 2 -3 0

¬P ∨ ¬Q ∨R -1 -2 3 0

Solution: -1 -2 3 → ¬P ∧ ¬Q ∧R

Another solution? Add clause

Solution: 1 2 -3 → P ∧Q ∧ ¬RNo more solutions

7/37

DPLL: rule-based viewDavis, Putnam, Logemann, Loveland

Let S be a set of clauses

Unit ResolutionS ∪ {`, C ∨ `}S ∪ {`, C}(

Unit SubsumptionS ∪ {`, C ∨ `}

S ∪ {`}

)Splitting

S

S ∪ {v} | S ∪ {¬v} if v is a variable occurring in S

I Failed branch: a trivial contradiction {. . . , v, . . . ,¬v . . . }I Successful branch: not failed, only unit clauses (with unit sub.)

Exercise: explain how a Boolean model can be extracted from theapplication of these rules(Hint: think of derivation trees and collect unit clauses...)

7/37

DPLL: rule-based viewDavis, Putnam, Logemann, Loveland

Let S be a set of clauses

Unit ResolutionS ∪ {`, C ∨ `}S ∪ {`, C}(

Unit SubsumptionS ∪ {`, C ∨ `}

S ∪ {`}

)Splitting

S

S ∪ {v} | S ∪ {¬v} if v is a variable occurring in S

I Failed branch: a trivial contradiction {. . . , v, . . . ,¬v . . . }I Successful branch: not failed, only unit clauses (with unit sub.)

Exercise: explain how a Boolean model can be extracted from theapplication of these rules

(Hint: think of derivation trees and collect unit clauses...)

7/37

DPLL: rule-based viewDavis, Putnam, Logemann, Loveland

Let S be a set of clauses

Unit ResolutionS ∪ {`, C ∨ `}S ∪ {`, C}(

Unit SubsumptionS ∪ {`, C ∨ `}

S ∪ {`}

)Splitting

S

S ∪ {v} | S ∪ {¬v} if v is a variable occurring in S

I Failed branch: a trivial contradiction {. . . , v, . . . ,¬v . . . }I Successful branch: not failed, only unit clauses (with unit sub.)

Exercise: explain how a Boolean model can be extracted from theapplication of these rules(Hint: think of derivation trees and collect unit clauses...)

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}

{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}

{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}

{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

8/37

DPLL: example

(P ∨ ¬Q) ∧ (Q ∨R) ∧ (¬R ∨ ¬P )

Already a set of clauses:

Split{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P} | {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}

And then only Unit Resolution rules

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P, P}{P ∨ ¬Q,Q ∨R,¬R,P}{P ∨ ¬Q,Q,¬R,P}

{P ∨ ¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,Q ∨R,¬R ∨ ¬P,¬P}{¬Q,R,¬R ∨ ¬P,¬P}

Remarks :

I Same two models again

I Satisfiability procedure: find one model (and stop)

I Much less sensitive to the number of variables than truth tables

9/37

DPLL: exercises

I P ∨Q,¬P ∨Q,¬R ∨ ¬Q,R ∨ ¬QI P ∨Q ∨R,¬P ∨ ¬Q ∨ ¬R,¬P ∨Q ∨R,¬Q ∨R,Q ∨ ¬RI ¬Q ∨ P,¬P ∨ ¬Q,Q ∨R,¬Q ∨ ¬R,¬P ∨ ¬R,P ∨ ¬R

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

10/37

Boolean formulas, CNF, DNF

I Boolean formulas: built with variables ¬, ∧, ∨, ⇒, . . .

I Conjunctive Normal Form (CNF): conjunction of clauses

I Disjunctive Normal Form (DNF): disjunction of cubes

Theorem

Every formula is logically equivalent to a CNF (DNF)

Remark :

I Converting to DNF, then finding one satisfiable cube is a trivialsatisfiability procedure

I checking the satisfiability of a cube is linear

I so DNF conversion cannot be efficient (i.e. polynomial) or P = NP

I computing DNF of formula: negation of CNF of negation of formula

I so CNF conversion cannot be efficient

11/37

Efficient computation of CNF

ConsiderΦ = (a1 ∧ · · · ∧ am) ∨ (b1 ∧ · · · ∧ bn)

Equivalent CNF:m∧i=1

n∧j=1

(ai ∨ bj)

Equisatisfiable CNF:

(X ∨ Y ) ∧ (X ⇔ a1 ∧ · · · ∧ am) ∧ (Y ⇔ b1 ∧ · · · ∧ bn)

where (X ⇔ a1 ∧ · · · ∧ am) can be represented as a conjunction ofclauses

(Exercise next slide).

Theorem (Tseitin transformation)

Every formula can be transformed in linear time into anequisatisfiable CNF

11/37

Efficient computation of CNF

ConsiderΦ = (a1 ∧ · · · ∧ am) ∨ (b1 ∧ · · · ∧ bn)

Equivalent CNF:m∧i=1

n∧j=1

(ai ∨ bj)

Equisatisfiable CNF:

(X ∨ Y ) ∧ (X ⇔ a1 ∧ · · · ∧ am) ∧ (Y ⇔ b1 ∧ · · · ∧ bn)

where (X ⇔ a1 ∧ · · · ∧ am) can be represented as a conjunction ofclauses (Exercise next slide).

Theorem (Tseitin transformation)

Every formula can be transformed in linear time into anequisatisfiable CNF

11/37

Efficient computation of CNF

ConsiderΦ = (a1 ∧ · · · ∧ am) ∨ (b1 ∧ · · · ∧ bn)

Equivalent CNF:m∧i=1

n∧j=1

(ai ∨ bj)

Equisatisfiable CNF:

(X ∨ Y ) ∧ (X ⇔ a1 ∧ · · · ∧ am) ∧ (Y ⇔ b1 ∧ · · · ∧ bn)

where (X ⇔ a1 ∧ · · · ∧ am) can be represented as a conjunction ofclauses (Exercise next slide).

Theorem (Tseitin transformation)

Every formula can be transformed in linear time into anequisatisfiable CNF

12/37

Computing CNFs: exercises

I (X ⇔ a1 ∧ · · · ∧ am)

I (p⇒ q) ≡ (p⇒ r)

I (p ∧ q) ∨ (r ∧ s) ∨ (¬q ∧ (p ∨ t))

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

13/37

DPLL: from rules to algorithm

From rules to algorithm:

I a way to enumerate splittings

I some splittings may lead to closed branches (clause unsatisfied/ empty clause derived)

I backtracking

I avoid copying sets of clauses and modifying clauses

Stack of assigned literals:

I some decided, others propagated

I level: number of decided literals on stack

I some clause become unitall literals but one assigned to false, last literal not assigned=⇒ new propagated literal on the stack

I clause may be falsified: all literals assigned to false=⇒ backtrack the last decision

I never mind about satisfied clause

14/37

DPLL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()

10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack (popliterals from stack) until the lastdecision and add the oppositeliteral as propagated

Write successive stacks for runs on

I {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}I {a∨b,¬b∨c∨d,¬b∨e,¬d∨¬e∨f, a∨c∨f,¬a∨g,¬g∨b,¬h∨j,¬i∨k}

14/37

DPLL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()

10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack (popliterals from stack) until the lastdecision and add the oppositeliteral as propagated

Write successive stacks for runs on

I {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}I {a∨b,¬b∨c∨d,¬b∨e,¬d∨¬e∨f, a∨c∨f,¬a∨g,¬g∨b,¬h∨j,¬i∨k}

14/37

DPLL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()

10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack (popliterals from stack) until the lastdecision and add the oppositeliteral as propagated

Write successive stacks for runs on

I {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}I {a∨b,¬b∨c∨d,¬b∨e,¬d∨¬e∨f, a∨c∨f,¬a∨g,¬g∨b,¬h∨j,¬i∨k}

14/37

DPLL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()

10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack (popliterals from stack) until the lastdecision and add the oppositeliteral as propagated

Write successive stacks for runs on

I {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}I {a∨b,¬b∨c∨d,¬b∨e,¬d∨¬e∨f, a∨c∨f,¬a∨g,¬g∨b,¬h∨j,¬i∨k}

14/37

DPLL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()

10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack (popliterals from stack) until the lastdecision and add the oppositeliteral as propagated

Write successive stacks for runs on

I {P ∨ ¬Q,Q ∨R,¬R ∨ ¬P}I {a∨b,¬b∨c∨d,¬b∨e,¬d∨¬e∨f, a∨c∨f,¬a∨g,¬g∨b,¬h∨j,¬i∨k}

15/37

DPLL: abstract view

Rules handle a data-structure M || F where M is a partialassignment of Boolean variables, and F is a set of clauses

Propagate M || F,C ∨ ` ` M ` || F,C ∨ `if M |= ¬C, ` undefined in M

Decide M || F ` M `d || Fif ` or ` in F , ` undefined in M

Fail M || F,C ` ⊥if M |= ¬C, no decision literals in M

Backtrack M `d N || F,C ` M ` || F,C

if

{M `d N |= ¬Cno decision literals in N

16/37

DPLL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()

10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack (popliterals from stack) until the lastdecision and add the oppositeliteral as propagated

17/37

Towards CDCLConflict Driven Clause Learning

Backtrack

I depending on decisions, the same dead end may be tried againand again

I would be much better to remember the very reason whyconflict: new clause

I then forget about backtracking and changing decision. Justadd clause, backtrack to when it is propagating

17/37

Towards CDCLConflict Driven Clause Learning

Backtrack

I depending on decisions, the same dead end may be tried againand again

I would be much better to remember the very reason whyconflict: new clause

I then forget about backtracking and changing decision. Justadd clause, backtrack to when it is propagating

17/37

Towards CDCLConflict Driven Clause Learning

Backtrack

I depending on decisions, the same dead end may be tried againand again

I would be much better to remember the very reason whyconflict: new clause

I then forget about backtracking and changing decision. Justadd clause, backtrack to when it is propagating

18/37

DPLL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()

10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack (popliterals from stack) until the lastdecision and add the oppositeliteral as propagated

19/37

CDCL: algorithmic view

1: procedure SAT(C)2: while > do3: if Propagate() then4: if ¬Decide() then5: return SAT

6: continue7: if level = 0 then8: return UNSAT

9: Analyse()10: Backtrack()

I Propagate: find unit clausesrepeatedly and push literals onthe stack. Returns ⊥ iffunsatisfied clause

I Decide: choses one nonassigned literal, push on stack.Returns ⊥ iff no literal

I Analyse: analyse the conflictfrom propagate, create conflictclause, add it in the set ofclauses

I Backtrack: backtrack(eliminate literals from stack)until conflict clause is unit

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1

I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2

I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3

I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4

I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5

I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6

I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7

I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8

I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9

I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10

I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11

I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12

I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13

I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14

I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15

I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16

I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

20/37

Conflict analysis, example (1/5)

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

I No unit clause: decide ¬x1I C1: propagate x2I C2: propagate ¬x3I No unit clause: decide x4I C3: propagate ¬x5I C4: propagate x6I No unit clause: decide ¬x7I C5: propagate ¬x8I C6: propagate x9I No unit clause: decide ¬x10I C7: propagate x11I C8: propagate ¬x12I C9: propagate ¬x13I C10: propagate x14I C11: propagate x15I C12: propagate ¬x16I C13: propagate x16I Conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clause

x13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clause

x13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clause

x13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?

UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

21/37

Conflict analysis, example (2/5)Conflict graph

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

Every line separating the conflict from the decisionsdefines a logical consequent clausex13 ∨ ¬x14 ∨ ¬x15

x1 ∨ ¬x4 ∨ x7 ∨ x10

¬x2 ∨ ¬x4 ∨ x5 ∨ x7 ∨ x8 ∨ x10

Which one to choose?UIP: unique implication point: just ONE greenOne variable at conflicting decision level

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision level

There are several of them¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them

¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them

¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

22/37

Conflict analysis, example (3/5)Conflict graph, UIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: unique implication point: just ONE greenOne variable at the conflicting decision levelThere are several of them¬x6 ∨ x7 ∨ x8 ∨ ¬x9 ∨ x10

¬x6 ∨ x7 ∨ x8 ∨ ¬x11

¬x6 ∨ x7 ∨ x12

Take the FUIP (first unique implication point):closest to conflict

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variableRepeatedly eliminate latest “green” var., not last oneEliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variable

Repeatedly eliminate latest “green” var., not last oneEliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variable

Repeatedly eliminate latest “green” var., not last oneEliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variableRepeatedly eliminate latest “green” var., not last one

Eliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variableRepeatedly eliminate latest “green” var., not last oneEliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variableRepeatedly eliminate latest “green” var., not last oneEliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variableRepeatedly eliminate latest “green” var., not last oneEliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

23/37

Conflict analysis, example (4/5)Conflict graph, computing FUIP

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

¬x1

x2

¬x3

x4

¬x5

x6

¬x7

¬x8

x9

¬x10

x11

¬x12

¬x13

x14

x15

¬x16

x16

UIP: One variable at conflicting decision levelFUIP, closest to conflict: ¬x6 ∨ x7 ∨ x12

Resolve 2 clauses with conflicting variableRepeatedly eliminate latest “green” var., not last oneEliminate a variable? Resolve with propagating clause

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

x12 ∨ ¬x13

x7 ∨ x12 ∨ x14

¬x6 ∨ x12 ∨ x15

x13 ∨ ¬x14 ∨ ¬x16 ¬x15 ∨ ¬x14 ∨ x16

x13 ∨ ¬x14 ∨ ¬x15

¬x6 ∨ x12 ∨ x13 ∨ ¬x14

¬x6 ∨ x7 ∨ x12 ∨ x13

x7 ∨ ¬x6 ∨ x12

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

¬x10

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

x12/C′1

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

x12/C′1

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

24/37

Conflict analysis, example (5/5)The whole picture

C1 : x1 ∨ x2

C2 : ¬x2 ∨ ¬x3

C3 : ¬x2 ∨ ¬x4 ∨ ¬x5

C4 : x3 ∨ x5 ∨ x6

C5 : x7 ∨ ¬x6 ∨ ¬x8

C6 : ¬x4 ∨ x8 ∨ x9

C7 : x10 ∨ ¬x9 ∨ x11

C8 : ¬x11 ∨ x8 ∨ ¬x12

C9 : x12 ∨ ¬x13

C10 : x7 ∨ x12 ∨ x14

C11 : ¬x6 ∨ x12 ∨ x15

C12 : x13 ∨ ¬x14 ∨ ¬x16

C13 : ¬x15 ∨ ¬x14 ∨ x16

C′1 : x7 ∨ ¬x6 ∨ x12

I Decide and propagate

I Until conflict

I Analyse (compute FUIP)

I Add clause

I Backtrack to the point where the clause ispropagatingOften more than just one level

I Propagate

I Decide and propagate, until conflict, analyse,. . .

¬x1

x2/C1

¬x3/C2

x4

¬x5/C3

x6/C4

¬x7

¬x8/C5

x9/C6

x12/C′1

x11/C7

¬x12/C8

¬x13/C9

x14/C10

x15/C11

¬x16/C12

x16/C13

25/37

CDCL: FUIP and more practical aspects

I It turns out that FUIP works best,but this is an experimental observation

I Heuristics for decisions

I Clause removal (and heuristics to evaluate the ones toremove)

I Conflict clause minimization

I Restarting

I Preprocessing

25/37

CDCL: FUIP and more practical aspects

I It turns out that FUIP works best,but this is an experimental observation

I Heuristics for decisions

I Clause removal (and heuristics to evaluate the ones toremove)

I Conflict clause minimization

I Restarting

I Preprocessing

25/37

CDCL: FUIP and more practical aspects

I It turns out that FUIP works best,but this is an experimental observation

I Heuristics for decisions

I Clause removal (and heuristics to evaluate the ones toremove)

I Conflict clause minimization

I Restarting

I Preprocessing

25/37

CDCL: FUIP and more practical aspects

I It turns out that FUIP works best,but this is an experimental observation

I Heuristics for decisions

I Clause removal (and heuristics to evaluate the ones toremove)

I Conflict clause minimization

I Restarting

I Preprocessing

25/37

CDCL: FUIP and more practical aspects

I It turns out that FUIP works best,but this is an experimental observation

I Heuristics for decisions

I Clause removal (and heuristics to evaluate the ones toremove)

I Conflict clause minimization

I Restarting

I Preprocessing

25/37

CDCL: FUIP and more practical aspects

I It turns out that FUIP works best,but this is an experimental observation

I Heuristics for decisions

I Clause removal (and heuristics to evaluate the ones toremove)

I Conflict clause minimization

I Restarting

I Preprocessing

26/37

CDCL: evolution of solvers

2002[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

2003[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

2005[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

2007[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

2009[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

2011[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

2014[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

2016[Source: Laurent Simon]

26/37

CDCL: evolution of solvers

Winners[Source: Laurent Simon]

27/37

Conclusion

I only a brief glimpse on the practical aspects of SAT solving

I many more tricks, hacks, techniques, heuristics, and eventheories

I a good SAT solver: good set of those tricks, mixed in theright amount and the right order, low level optimization

I oldest logic problem, still very active research subject(particularly since mid 90s)

Laurent Simon (Glucose)

We know how to built efficient SAT Solvers but we can hardlyexplain their power

27/37

Conclusion

I only a brief glimpse on the practical aspects of SAT solving

I many more tricks, hacks, techniques, heuristics, and eventheories

I a good SAT solver: good set of those tricks, mixed in theright amount and the right order, low level optimization

I oldest logic problem, still very active research subject(particularly since mid 90s)

Laurent Simon (Glucose)

We know how to built efficient SAT Solvers but we can hardlyexplain their power

27/37

Conclusion

I only a brief glimpse on the practical aspects of SAT solving

I many more tricks, hacks, techniques, heuristics, and eventheories

I a good SAT solver: good set of those tricks, mixed in theright amount and the right order, low level optimization

I oldest logic problem, still very active research subject(particularly since mid 90s)

Laurent Simon (Glucose)

We know how to built efficient SAT Solvers but we can hardlyexplain their power

27/37

Conclusion

I only a brief glimpse on the practical aspects of SAT solving

I many more tricks, hacks, techniques, heuristics, and eventheories

I a good SAT solver: good set of those tricks, mixed in theright amount and the right order, low level optimization

I oldest logic problem, still very active research subject(particularly since mid 90s)

Laurent Simon (Glucose)

We know how to built efficient SAT Solvers but we can hardlyexplain their power

27/37

Conclusion

I only a brief glimpse on the practical aspects of SAT solving

I many more tricks, hacks, techniques, heuristics, and eventheories

I a good SAT solver: good set of those tricks, mixed in theright amount and the right order, low level optimization

I oldest logic problem, still very active research subject(particularly since mid 90s)

Laurent Simon (Glucose)

We know how to built efficient SAT Solvers but we can hardlyexplain their power

27/37

Conclusion

I only a brief glimpse on the practical aspects of SAT solving

I many more tricks, hacks, techniques, heuristics, and eventheories

I a good SAT solver: good set of those tricks, mixed in theright amount and the right order, low level optimization

I oldest logic problem, still very active research subject(particularly since mid 90s)

Laurent Simon (Glucose)

We know how to built efficient SAT Solvers but we can hardlyexplain their power

28/37

SAT Solving: further reading/learning

I Een, Sorensson: MiniSAT 2011

I Marijn Heule:http://www.sc-square.org/CSA/school/lectures.html

I Armin Biere, Marijn Heule, Hans van Maaren and Toby Walsh editors,Handbook on Satisfiability. IOS Press, February 2009.

I SAT/SMT/AR summer schools

29/37

SAT solvers input format: DIMACS

I input: CNF. File extension .cnf

I Boolean variable: number ≥ 1I literal either positive (represented by positive number)

literal either

negative (represented by negative number)I clause: series of numbers seperated by spaces, terminated by 0I cnf: series of clausesI file starts with p cnf X Y (X variables, Y clauses)I comments start by c

Exemple

p −→ 1, q −→ 2, r −→ 3p cnf 3 4

p ∨ q

−→ 1 2 0

p ∨ r

−→ 1 3 0

¬q ∨ ¬r

−→ -2 -3 0

¬p

−→ -1 0

29/37

SAT solvers input format: DIMACS

I input: CNF. File extension .cnf

I Boolean variable: number ≥ 1I literal either positive (represented by positive number)

literal either

negative (represented by negative number)I clause: series of numbers seperated by spaces, terminated by 0I cnf: series of clausesI file starts with p cnf X Y (X variables, Y clauses)I comments start by c

Exemple

p −→ 1, q −→ 2, r −→ 3

p cnf 3 4

p ∨ q

−→ 1 2 0

p ∨ r

−→ 1 3 0

¬q ∨ ¬r

−→ -2 -3 0

¬p

−→ -1 0

29/37

SAT solvers input format: DIMACS

I input: CNF. File extension .cnf

I Boolean variable: number ≥ 1I literal either positive (represented by positive number)

literal either

negative (represented by negative number)I clause: series of numbers seperated by spaces, terminated by 0I cnf: series of clausesI file starts with p cnf X Y (X variables, Y clauses)I comments start by c

Exemple

p −→ 1, q −→ 2, r −→ 3

p cnf 3 4

p ∨ q −→ 1 2 0

p ∨ r −→ 1 3 0

¬q ∨ ¬r −→ -2 -3 0

¬p −→ -1 0

29/37

SAT solvers input format: DIMACS

I input: CNF. File extension .cnf

I Boolean variable: number ≥ 1I literal either positive (represented by positive number)

literal either

negative (represented by negative number)I clause: series of numbers seperated by spaces, terminated by 0I cnf: series of clausesI file starts with p cnf X Y (X variables, Y clauses)I comments start by c

Exemple

p −→ 1, q −→ 2, r −→ 3p cnf 3 4

p ∨ q −→ 1 2 0

p ∨ r −→ 1 3 0

¬q ∨ ¬r −→ -2 -3 0

¬p −→ -1 0

30/37

Sudoku (1/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I Number 1 is at line 1, column 1p1,1,1

I Number 3 is at line 2, column 4p2,4,3

I At location (1, 2), there is at most one number¬p1,2,1 ∨ ¬p1,2,2¬p1,2,1 ∨ ¬p1,2,3¬p1,2,1 ∨ ¬p1,2,4¬p1,2,2 ∨ ¬p1,2,3¬p1,2,2 ∨ ¬p1,2,4¬p1,2,3 ∨ ¬p1,2,4

30/37

Sudoku (1/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I Number 1 is at line 1, column 1

p1,1,1

I Number 3 is at line 2, column 4p2,4,3

I At location (1, 2), there is at most one number¬p1,2,1 ∨ ¬p1,2,2¬p1,2,1 ∨ ¬p1,2,3¬p1,2,1 ∨ ¬p1,2,4¬p1,2,2 ∨ ¬p1,2,3¬p1,2,2 ∨ ¬p1,2,4¬p1,2,3 ∨ ¬p1,2,4

30/37

Sudoku (1/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I Number 1 is at line 1, column 1p1,1,1

I Number 3 is at line 2, column 4p2,4,3

I At location (1, 2), there is at most one number¬p1,2,1 ∨ ¬p1,2,2¬p1,2,1 ∨ ¬p1,2,3¬p1,2,1 ∨ ¬p1,2,4¬p1,2,2 ∨ ¬p1,2,3¬p1,2,2 ∨ ¬p1,2,4¬p1,2,3 ∨ ¬p1,2,4

30/37

Sudoku (1/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I Number 1 is at line 1, column 1p1,1,1

I Number 3 is at line 2, column 4

p2,4,3

I At location (1, 2), there is at most one number¬p1,2,1 ∨ ¬p1,2,2¬p1,2,1 ∨ ¬p1,2,3¬p1,2,1 ∨ ¬p1,2,4¬p1,2,2 ∨ ¬p1,2,3¬p1,2,2 ∨ ¬p1,2,4¬p1,2,3 ∨ ¬p1,2,4

30/37

Sudoku (1/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I Number 1 is at line 1, column 1p1,1,1

I Number 3 is at line 2, column 4p2,4,3

I At location (1, 2), there is at most one number¬p1,2,1 ∨ ¬p1,2,2¬p1,2,1 ∨ ¬p1,2,3¬p1,2,1 ∨ ¬p1,2,4¬p1,2,2 ∨ ¬p1,2,3¬p1,2,2 ∨ ¬p1,2,4¬p1,2,3 ∨ ¬p1,2,4

30/37

Sudoku (1/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I Number 1 is at line 1, column 1p1,1,1

I Number 3 is at line 2, column 4p2,4,3

I At location (1, 2), there is at most one number

¬p1,2,1 ∨ ¬p1,2,2¬p1,2,1 ∨ ¬p1,2,3¬p1,2,1 ∨ ¬p1,2,4¬p1,2,2 ∨ ¬p1,2,3¬p1,2,2 ∨ ¬p1,2,4¬p1,2,3 ∨ ¬p1,2,4

30/37

Sudoku (1/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I Number 1 is at line 1, column 1p1,1,1

I Number 3 is at line 2, column 4p2,4,3

I At location (1, 2), there is at most one number¬p1,2,1 ∨ ¬p1,2,2¬p1,2,1 ∨ ¬p1,2,3¬p1,2,1 ∨ ¬p1,2,4¬p1,2,2 ∨ ¬p1,2,3¬p1,2,2 ∨ ¬p1,2,4¬p1,2,3 ∨ ¬p1,2,4

31/37

Sudoku (2/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I At location (1, 2), there is either 1, 2, 3, or 4 (repeat ∀ location)p1,2,1 ∨ p1,2,2 ∨ p1,2,3 ∨ p1,2,4

I Number 1 should be somewhere at line 2 (repeat ∀ number, line. . . )p2,1,1 ∨ p2,2,1 ∨ p2,3,1 ∨ p2,4,1

I Number 1 should be at most once at line 1¬p1,1,1 ∨ ¬p1,2,1¬p1,1,1 ∨ ¬p1,3,1¬p1,1,1 ∨ ¬p1,4,1¬p1,2,1 ∨ ¬p1,3,1¬p1,2,1 ∨ ¬p1,4,1¬p1,3,1 ∨ ¬p1,4,1

31/37

Sudoku (2/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I At location (1, 2), there is either 1, 2, 3, or 4 (repeat ∀ location)

p1,2,1 ∨ p1,2,2 ∨ p1,2,3 ∨ p1,2,4

I Number 1 should be somewhere at line 2 (repeat ∀ number, line. . . )p2,1,1 ∨ p2,2,1 ∨ p2,3,1 ∨ p2,4,1

I Number 1 should be at most once at line 1¬p1,1,1 ∨ ¬p1,2,1¬p1,1,1 ∨ ¬p1,3,1¬p1,1,1 ∨ ¬p1,4,1¬p1,2,1 ∨ ¬p1,3,1¬p1,2,1 ∨ ¬p1,4,1¬p1,3,1 ∨ ¬p1,4,1

31/37

Sudoku (2/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I At location (1, 2), there is either 1, 2, 3, or 4 (repeat ∀ location)p1,2,1 ∨ p1,2,2 ∨ p1,2,3 ∨ p1,2,4

I Number 1 should be somewhere at line 2 (repeat ∀ number, line. . . )p2,1,1 ∨ p2,2,1 ∨ p2,3,1 ∨ p2,4,1

I Number 1 should be at most once at line 1¬p1,1,1 ∨ ¬p1,2,1¬p1,1,1 ∨ ¬p1,3,1¬p1,1,1 ∨ ¬p1,4,1¬p1,2,1 ∨ ¬p1,3,1¬p1,2,1 ∨ ¬p1,4,1¬p1,3,1 ∨ ¬p1,4,1

31/37

Sudoku (2/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I At location (1, 2), there is either 1, 2, 3, or 4 (repeat ∀ location)p1,2,1 ∨ p1,2,2 ∨ p1,2,3 ∨ p1,2,4

I Number 1 should be somewhere at line 2 (repeat ∀ number, line. . . )

p2,1,1 ∨ p2,2,1 ∨ p2,3,1 ∨ p2,4,1

I Number 1 should be at most once at line 1¬p1,1,1 ∨ ¬p1,2,1¬p1,1,1 ∨ ¬p1,3,1¬p1,1,1 ∨ ¬p1,4,1¬p1,2,1 ∨ ¬p1,3,1¬p1,2,1 ∨ ¬p1,4,1¬p1,3,1 ∨ ¬p1,4,1

31/37

Sudoku (2/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I At location (1, 2), there is either 1, 2, 3, or 4 (repeat ∀ location)p1,2,1 ∨ p1,2,2 ∨ p1,2,3 ∨ p1,2,4

I Number 1 should be somewhere at line 2 (repeat ∀ number, line. . . )p2,1,1 ∨ p2,2,1 ∨ p2,3,1 ∨ p2,4,1

I Number 1 should be at most once at line 1¬p1,1,1 ∨ ¬p1,2,1¬p1,1,1 ∨ ¬p1,3,1¬p1,1,1 ∨ ¬p1,4,1¬p1,2,1 ∨ ¬p1,3,1¬p1,2,1 ∨ ¬p1,4,1¬p1,3,1 ∨ ¬p1,4,1

31/37

Sudoku (2/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I At location (1, 2), there is either 1, 2, 3, or 4 (repeat ∀ location)p1,2,1 ∨ p1,2,2 ∨ p1,2,3 ∨ p1,2,4

I Number 1 should be somewhere at line 2 (repeat ∀ number, line. . . )p2,1,1 ∨ p2,2,1 ∨ p2,3,1 ∨ p2,4,1

I Number 1 should be at most once at line 1

¬p1,1,1 ∨ ¬p1,2,1¬p1,1,1 ∨ ¬p1,3,1¬p1,1,1 ∨ ¬p1,4,1¬p1,2,1 ∨ ¬p1,3,1¬p1,2,1 ∨ ¬p1,4,1¬p1,3,1 ∨ ¬p1,4,1

31/37

Sudoku (2/3)

1

3

2

2

at line i, column j, is number x (pi,j,x)

I At location (1, 2), there is either 1, 2, 3, or 4 (repeat ∀ location)p1,2,1 ∨ p1,2,2 ∨ p1,2,3 ∨ p1,2,4

I Number 1 should be somewhere at line 2 (repeat ∀ number, line. . . )p2,1,1 ∨ p2,2,1 ∨ p2,3,1 ∨ p2,4,1

I Number 1 should be at most once at line 1¬p1,1,1 ∨ ¬p1,2,1¬p1,1,1 ∨ ¬p1,3,1¬p1,1,1 ∨ ¬p1,4,1¬p1,2,1 ∨ ¬p1,3,1¬p1,2,1 ∨ ¬p1,4,1¬p1,3,1 ∨ ¬p1,4,1

32/37

Sudoku (3/3)

Demo / Practical session

I https://members.loria.fr/PFontaine/sudoku-pack.zip

33/37

The Wolf, the Goat, and the Cabbage (1/5)

A farmer wants to cross a river in his small boat, with a wolf, agoat and a cabbage. He should make sure:

I to only take one animal or object with him, the boat being sosmall

I not to leave the wolf and the goat alone (or no more goat)

I not to leave the goat and the cabbage alone (or no morecabbage)

Is this possible? With how many crossings?

34/37

The Wolf, the Goat, and the Cabbage (2/5)

Use logic to encode the problem.

Four variables (that can be true or false):

I f farmer

I w wolf

I g goat

I c cabbage

E.g. f is true if f is on the left side, false if on the right side

I We start with

init =def f ∧ w ∧ g ∧ c

I We want to finish with

fin =def ¬f ∧ ¬w ∧ ¬g ∧ ¬c

34/37

The Wolf, the Goat, and the Cabbage (2/5)

Use logic to encode the problem.Four variables (that can be true or false):

I f farmer

I w wolf

I g goat

I c cabbage

E.g. f is true if f is on the left side, false if on the right side

I We start with

init =def f ∧ w ∧ g ∧ c

I We want to finish with

fin =def ¬f ∧ ¬w ∧ ¬g ∧ ¬c

34/37

The Wolf, the Goat, and the Cabbage (2/5)

Use logic to encode the problem.Four variables (that can be true or false):

I f farmer

I w wolf

I g goat

I c cabbage

E.g. f is true if f is on the left side, false if on the right side

I We start with init =def f ∧ w ∧ g ∧ c

I We want to finish with

fin =def ¬f ∧ ¬w ∧ ¬g ∧ ¬c

34/37

The Wolf, the Goat, and the Cabbage (2/5)

Use logic to encode the problem.Four variables (that can be true or false):

I f farmer

I w wolf

I g goat

I c cabbage

E.g. f is true if f is on the left side, false if on the right side

I We start with init =def f ∧ w ∧ g ∧ c

I We want to finish with fin =def ¬f ∧ ¬w ∧ ¬g ∧ ¬c

35/37

The Wolf, the Goat, and the Cabbage (3/5)

How to express there is some danger

A state is dangerous if the wolf and the goat (or the goat and thecabbage) are on one bank, and the farmer on the other

Formally:

danger =def

((w ≡ g) ∧ (w ≡ ¬f)

)∨((g ≡ c) ∧ (g ≡ ¬f)

)

35/37

The Wolf, the Goat, and the Cabbage (3/5)

How to express there is some danger

A state is dangerous if the wolf and the goat (or the goat and thecabbage) are on one bank, and the farmer on the other

Formally:

danger =def

((w ≡ g) ∧ (w ≡ ¬f)

)∨((g ≡ c) ∧ (g ≡ ¬f)

)

35/37

The Wolf, the Goat, and the Cabbage (3/5)

How to express there is some danger

A state is dangerous if the wolf and the goat (or the goat and thecabbage) are on one bank, and the farmer on the other

Formally:

danger =def

((w ≡ g) ∧ (w ≡ ¬f)

)∨((g ≡ c) ∧ (g ≡ ¬f)

)

36/37

The Wolf, the Goat, and the Cabbage (4/5)

To find out if it is possible to find a solution with n crossing,we will use n + 1 copies of the variables fi, wi, gi, ci.

First, let’s write the formula corresponding the i-th crossing of thefarmer.

I The farmer is crossing so fi+1 and ¬fi should be different

I Only one animal/object is changing bank; two (or more) variablesamong w, g, c should stay the same

crossi =def

(fi+1 ≡ ¬fi

)

∧(

((wi+1 ≡ wi) ∧ (gi+1 ≡ gi)

)

((wi+1 ≡ wi) ∧ (ci+1 ≡ ci)

)

((gi+1 ≡ gi) ∧ (ci+1 ≡ ci)

)

)

36/37

The Wolf, the Goat, and the Cabbage (4/5)

To find out if it is possible to find a solution with n crossing,we will use n + 1 copies of the variables fi, wi, gi, ci.

First, let’s write the formula corresponding the i-th crossing of thefarmer.

I The farmer is crossing so fi+1 and ¬fi should be different

I Only one animal/object is changing bank; two (or more) variablesamong w, g, c should stay the same

crossi =def

(fi+1 ≡ ¬fi

)

∧(

((wi+1 ≡ wi) ∧ (gi+1 ≡ gi)

)

((wi+1 ≡ wi) ∧ (ci+1 ≡ ci)

)

((gi+1 ≡ gi) ∧ (ci+1 ≡ ci)

)

)

36/37

The Wolf, the Goat, and the Cabbage (4/5)

To find out if it is possible to find a solution with n crossing,we will use n + 1 copies of the variables fi, wi, gi, ci.

First, let’s write the formula corresponding the i-th crossing of thefarmer.

I The farmer is crossing so fi+1 and ¬fi should be different

I Only one animal/object is changing bank; two (or more) variablesamong w, g, c should stay the same

crossi =def

(fi+1 ≡ ¬fi

)∧(

((wi+1 ≡ wi) ∧ (gi+1 ≡ gi)

)

((wi+1 ≡ wi) ∧ (ci+1 ≡ ci)

)

((gi+1 ≡ gi) ∧ (ci+1 ≡ ci)

)

)

36/37

The Wolf, the Goat, and the Cabbage (4/5)

To find out if it is possible to find a solution with n crossing,we will use n + 1 copies of the variables fi, wi, gi, ci.

First, let’s write the formula corresponding the i-th crossing of thefarmer.

I The farmer is crossing so fi+1 and ¬fi should be different

I Only one animal/object is changing bank; two (or more) variablesamong w, g, c should stay the same

crossi =def

(fi+1 ≡ ¬fi

)∧(

((wi+1 ≡ wi) ∧ (gi+1 ≡ gi)

)

((wi+1 ≡ wi) ∧ (ci+1 ≡ ci)

)

((gi+1 ≡ gi) ∧ (ci+1 ≡ ci)

)

)

36/37

The Wolf, the Goat, and the Cabbage (4/5)

To find out if it is possible to find a solution with n crossing,we will use n + 1 copies of the variables fi, wi, gi, ci.

First, let’s write the formula corresponding the i-th crossing of thefarmer.

I The farmer is crossing so fi+1 and ¬fi should be different

I Only one animal/object is changing bank; two (or more) variablesamong w, g, c should stay the same

crossi =def

(fi+1 ≡ ¬fi

)∧( (

(wi+1 ≡ wi) ∧ (gi+1 ≡ gi))

∨((wi+1 ≡ wi) ∧ (ci+1 ≡ ci)

)∨

((gi+1 ≡ gi) ∧ (ci+1 ≡ ci)

))

37/37

The Wolf, the Goat, and the Cabbage (5/5)

We want to write a formula to encode solutions in n crossings

I Starting and ending state have been defined

I Two successive states should correspond to one crossing

I No state should be dangerous

init1

finn+1

cross1 ∧ cross2 ∧ . . . ∧ crossn

¬danger1 ∧ ¬danger2 ∧ . . . ∧ ¬dangern+1

A SAT solver can find out that there is no solution in 4 traversals, but

that 6 traversals are enough.

37/37

The Wolf, the Goat, and the Cabbage (5/5)

We want to write a formula to encode solutions in n crossings

I Starting and ending state have been defined

I Two successive states should correspond to one crossing

I No state should be dangerous

init1 ∧ finn+1

cross1 ∧ cross2 ∧ . . . ∧ crossn

¬danger1 ∧ ¬danger2 ∧ . . . ∧ ¬dangern+1

A SAT solver can find out that there is no solution in 4 traversals, but

that 6 traversals are enough.

37/37

The Wolf, the Goat, and the Cabbage (5/5)

We want to write a formula to encode solutions in n crossings

I Starting and ending state have been defined

I Two successive states should correspond to one crossing

I No state should be dangerous

init1 ∧ finn+1

∧ cross1 ∧ cross2 ∧ . . . ∧ crossn∧

¬danger1 ∧ ¬danger2 ∧ . . . ∧ ¬dangern+1

A SAT solver can find out that there is no solution in 4 traversals, but

that 6 traversals are enough.

37/37

The Wolf, the Goat, and the Cabbage (5/5)

We want to write a formula to encode solutions in n crossings

I Starting and ending state have been defined

I Two successive states should correspond to one crossing

I No state should be dangerous

init1 ∧ finn+1

∧ cross1 ∧ cross2 ∧ . . . ∧ crossn∧ ¬danger1 ∧ ¬danger2 ∧ . . . ∧ ¬dangern+1

A SAT solver can find out that there is no solution in 4 traversals, but

that 6 traversals are enough.

37/37

The Wolf, the Goat, and the Cabbage (5/5)

We want to write a formula to encode solutions in n crossings

I Starting and ending state have been defined

I Two successive states should correspond to one crossing

I No state should be dangerous

init1 ∧ finn+1

∧ cross1 ∧ cross2 ∧ . . . ∧ crossn∧ ¬danger1 ∧ ¬danger2 ∧ . . . ∧ ¬dangern+1

A SAT solver can find out that there is no solution in 4 traversals, but

that 6 traversals are enough.

top related