Basics of Conflict-Driven Clause Learning

The fundamental CDCL algorithm is shown in the image below. This image is taken from Kroening and Strichman's book Decision Procedures, an algorithmic point of view.

CDCL

Translating this into C++ may look like the following:

int cdcl()
{
  while (true) {
    while (bcp() == CONFLICT) {
      bt_level = analyse_conflict();
      if (bt_level < 0)
	return UNSATISFIABLE;
      backtrack(bt_level);
    }
    if (!decide())
      return SATISFIABLE;
}

This leaves us with various concerns:

Here are some partial answers:

Return to the homepage.