Resolution
Chứng minh phản chứng
- Negate the conclusion trying to be proven(!)
- Then turn this into CNF
- Attempt to derive empty clause
- If found this indicates the set of clauses was not satisfiable
- This then means that the original conclusion was supported by the clauses
→ Everything separate by ∧ is a fact
Examples
Ex1
∀𝑥 433Inst(x) → Cool(x)
433Inst(Jon)
Prove Cool(Jon)
Solution
→ 433Inst(x) → Cool(x) ∧ 433Inst(Jon) ∧ ¬ Cool(Jon) **
→ (¬433Inst(x) V Cool(x)) ∧ 433Inst(Jon) ∧ ¬ Cool(Jon)
→ mgu(x → Jon) we get (¬433Inst(Jon) V Cool(Jon))
For ** to be true ¬433Inst(Jon) V Cool(Jon) need to be true
→ Cool(Jon) need to be true
→ (¬433Inst(x) V Cool(x)) ∧ 433Inst(Jon) ∧ (¬Cool(Jon)) ∧ (Cool(Jon))
We have contradiction since (¬Cool(Jon)) ∧ (Cool(Jon)) resolve to empty clause
Facts
Extension Rules
Knowledge on top creates knowledge at the bottom
Resolution rule
example 1
Can always use empty clause as one of the thing needed in the formula
C doesnt exist → only D
Actually we dont have Jon in all clauses, they are x:
→ mgu(x <-
Jon)
example 2
Factorization
If I have a bunch of V and some of them are P and P'. P' is a variant of P (same but applied to different predicate letter like P(x) and P(y) or P(a) and P(b)) we can drop P'
Examples
Ex1
1. 𝑝 ∨ 𝑞
2. 𝑝 ∨ ¬𝑞
3. ¬𝑝 ∨ 𝑞,
4. ¬𝑝 ∨ ¬𝑞
5. p ∨ p resolve (1) and (2)
6. p factorize (5)
7. ¬𝑝 ∨ ¬𝑝 resolve (3) and (4)
8. ¬𝑝 factorize (7)
9. ∎ resolve (6) and (8)
Ex2
1. 𝑃(𝑥) ∨ 𝑅(𝑥)
2. ¬𝑅(𝑓(𝑎, 𝑏))
3. ¬𝑃(g(𝑎, 𝑏))
4. mgu = {x ≈ f(a, b)} → 𝑃(f(a, b)) ∨ 𝑅(𝑓(𝑎, 𝑏)) ∧ ¬𝑅(𝑓(𝑎, 𝑏))
→ 𝑃(f(a, b)) by resolution
5. mgu = {x ≈ f(a, b), x ≈ g(𝑎, 𝑏)} → R(g(a, b))
Cant reach empty clause
Ex3
1. 𝑃(𝑥) ∨ 𝑅(𝑦)
2. ¬𝑅(𝑓(𝑎, 𝑏))
3. ¬𝑃(g(𝑎, 𝑏))
4. P(x) resolve (1) and (2) with mgu = {y ≈ f(a, b)}
5. ∎ resolve (3) and (4) with mgu = {x ≈ g(a, b)}