The exercise exam asks you to produce two written artefacts: (1) the four numbered rewriting lines that carry a sentence into conjunctive normal form, one line per step in the fixed order, and (2) a DPLL search tree with the surviving clause set written beside every node, every move labelled, and all satisfying models listed at the leaves. This tool steps both, one move at a time.
A literal (a symbol or a negated symbol) sits inside a clause (a disjunction of literals), and a sentence is in CNF (a conjunction of clauses) when ∧ is on the outside, ∨ on the inside, and every ¬ sits on a symbol. What earns the marks: writing the intermediate line for each step rather than jumping to the answer, because the steps are what is being assessed.
the answer as you would write it, one numbered line per step
clauses collected so far
the sentences
the four steps, in this order and no other
Step 3 cannot finish while an implication is still present, because ⇒ hides a negation you have not written down yet. Step 4 cannot start until every negation already sits on a symbol, because distribution assumes its operands are pure disjunctions and conjunctions.
Only sentence 2 and sentence 3 of the session problem need step 3, and only sentence 4 needs step 4. A conversion in which every sentence uses every step is a sign that something has gone wrong.
| # | sentence | step | rule | result |
|---|
A model (a world in which every clause is true) is what a leaf reports; a symbol still unassigned at a satisfied leaf is free, and that leaf stands for two models, not one. What earns the marks: the surviving clause set beside every node with the unit clause marked. A tree of bare assignments with no clause sets is not a trace of DPLL, it is a guess that happens to be right.
clause set at the current node
Satisfied clauses are greyed (they can be ignored from here on). A literal struck through in red is dead under the current assignment: hover it for the reason. The shrinking clause is what you write beside the node in the exam.
| # | clause | what is left | state |
|---|
Published style, unsatisfied clauses only:
models found
0
rules, applied in this order at every node
| # | node | move | why | clause set after | models |
|---|
Traces are precomputed at load and machine checked against a Python reference implementation of the same two algorithms. Sources: FAI Part 10 deck, exercise session 7 assignment and its published solutions. Every number here is the source's number.