Resolution in First-Order Logic
Basic steps for proving a conclusion S given premises Premise1, , Premisen (all expressed in FOL):
1. Convert all sentences to CNF 2. Negate conclusion S & convert result to CNF 3. Add negated conclusion S to the premise clauses 4. Repeat until contradiction or no progress is made: a. Select 2 clauses (call them parent clauses) b. Resolve them together, performing all required unifications c. If resolvent is the empty clause, a contradiction has been found (i.e., S follows from the premises) d. If not, add resolvent to the premises
If we succeed in Step 4, we have proved the conclusion
Resolution Examples
Example 1:
If something is intelligent, it has common sense Deep Blue does not have common sense Prove that Deep Blue is not intelligent 1. x.I(x) H(x) 2. H(D) Conclusion: I(D) Denial: C3: I(D) C1: I(x) H(x) C2: H(D)
CNF
A resolution proof of I(D):
I(x) H(x) {x/D} I(D) I(D) H(D)
Proof also written as: C4: I(D) C5:
2nd literal, 1st clause
r[C1b, C2] r[C3, C4]
Resolution Examples (cont.)
Example 2:
Premises: Mother(Lulu, Fifi) Alive(Lulu) Prove: Older(Lulu, Fifi) Denial: Older(Lulu, Fifi)
x y.Mother(x,y) Parent(x,y) x y.(Parent(x,y) Alive(x)) Older(x,y)
Mother(Lulu,Fifi)
Mother(x,y) Parent(x,y)
{x/Lulu,y/Fifi}
Parent(Lulu,Fifi)
Parent(x,y) Alive(x) Older(x,y)
{x/Lulu,y/Fifi}
Alive(Lulu) Older(Lulu, Fifi)
Alive(Lulu)
Older(Lulu, Fifi)
Older(Lulu, Fifi)
Resolution Examples (cont.)
Example 3:
Suppose the desired conclusion had been Something is older than Fifi x.Older(x, Fifi) Denial: x.Older(x, Fifi) also written as: x.Older(x, Fifi) in clause form: Older(x, Fifi) Last proof step would have been C8: Older(Lulu,Fifi) {x/Lulu} C5: Older(x, Fifi)
Dont make mistake of first forming clause from conclusion & then denying it:
Conclusion: x.Older(x, Fifi) clause form: Older(C, Fifi) denial: Older(C, Fifi) Cannot unify Lulu,C!!
Question-Answering
Example 1: Who is Lulu older than?
Prove that there is an x such that Lulu is older than x In FOL form: x.Older(Lulu, x) Denial: x.Older(Lulu, x) x.Older(Lulu, x) in clause form: Older(Lulu, x) Successful proof gives {x/Fifi} [Verify!!]
Example 2: What is older than what?
In FOL form: x y.Older(x, y) Denial: xy.Older(x, y) in clause form: Older(x, y) Successful proof gives {x/Lulu, y/Fifi} [Verify!!]