Definition
Conflict-Driven Clause Learning
Let be a CNF formula and let be a trail of decisions and propagated literals. Conflict-driven clause learning (CDCL) extends the DPLL algorithm as follows: when unit propagation falsifies a clause, the solver resolves that conflict clause with the reason clauses recorded in to derive a learned clause satisfying
It adds to and backtracks directly to a decision level at which becomes unit. The conflict therefore becomes a reusable constraint rather than a failed branch that may be explored again.
Mechanism
CDCL repeats the cycle
CDCL cycle
- Decide: assign an unassigned variable and begin a new decision level.
- Propagate: apply unit propagation and record the reason clause for every forced literal.
- Analyse: when a clause becomes false, resolve it with reason clauses to obtain a learned clause.
- Backjump: undo assignments to the highest earlier level occurring in the learned clause; the clause then propagates immediately.
A conflict at decision level proves unsatisfiability. If every variable is assigned without conflict, the trail is a satisfying assignment.
Correctness
Every learned clause is obtained by resolution, so adding it preserves the models of :
CDCL remains complete, but avoids repeating conflicts. Restarts may discard the current trail while retaining learned clauses, so earlier conflicts continue to constrain later search.
Example
Propagation reaches a conflict
Consider
Suppose the solver decides
where parentheses indicate decision levels. Unit propagation gives
Thus is the conflict clause.
The implication graph records which clause forced each assignment. The highlighted assignment is the first unique implication point: every path from the current decision to the conflict passes through it.
Resolve first with the reason for , then with the reason for :
The learned first-UIP clause is therefore
Only belongs to the current level. CDCL backjumps from level to level , where makes unit and forces .
If resolution continues to the decisions, it instead yields
This clause states that , , and cannot hold simultaneously. Both clauses are consequences of ; modern solvers usually stop at the first UIP.