§ Resolution algorithm for propositional logic
- Resolution is refutation complete: will find a disproof if one exists for propositional logic
- Key idea is the resolution rule:
F \/ l; G \/ not(l)
-------------------
F \/ G
- See that this allows us to reduce the number of occurrences of
l
. If we keep doing this, we get the empty set with \/
as the monoidal operation, forcing us to conclude False
.
§ Termination
- At each step, we introduce a new clause, but the clause has one fewer literal.
- So we decrease on the number of literals this clause can resolve with.
§ Soundness
- First node that the resolution rule is sound, in that it only infers correct clauses.
- See that we need to prove only one rule:
(X | A) & (!X | B) = (A & B)
, which can be proven by e.g. truth table. - So if resolution finds a contradiction, the original set of cluases did have a contradiction.
§ Completeness
- We need to show that if resolution did not find a contradiction, then a model exists (the set of clauses was consistent)
- Suppose resolution saturates, and did not find a contradiction.
- Then we claim that in this saturated set, every literal
L
either occurs as all positive, or all negative, or does not occur. - If this is true, then clearly we have a model: for every +ve literal, assign true, for every pure -ve literal, assign false, for a literal that does not occur, assign it whichever.
- Suppose the claim is not true. Then a literal L occurs in some clause C as +ve, and in another clause C' as negative.
- This means that C, C' can be resolved to get a new clause!
- But this cannot be, since we assumed that the set of clauses was saturated.