I'm trying to solve this problem for my logical programming class:
Every child loves Santa. Everyone who loves Santa loves any reindeer. Rudolph is a reindeer, and Rudolph has a red nose. Anything which has a red nose is weird or is a clown. No reindeer is a clown. John does not love anything which is weird. (Conclusion) John is not a child.
Here is my theory:
1. K(x) => L(x,s) % Every child loves Santa
2. L(x,s) => ( D(y) => L(x,y) ) % Everyone who loves Santa loves any reindeer
3. D(r) & R(r) % Rudolph is a reindeer, and Rudolph has a red nose.
4. R(x) => ( W(x) v C(x) ) % Anything which has a red nose is weird or is clown
5. ~( D(x) & C(x) ) % No reindeer is a clown.
6. W(x) => ~L(j,x) % John does not love anything which is weird.
7. ?=> ~K(j) % John is not a child?
Here are the clauses in CNF:
1. ~K(x) v L(x,s)
2. ~L(x,s) v ~D(y) v L(x,y)
3. D(r)
4. R(r)
5. ~R(x) v W(x) v C(x)
6. ~D(x) v ~C(x)
7. ~W(x) v ~L(j,x)
8. K(j)
I cannot seem to get an empty statement by Resolution. Is there a mistake in my theory or the conclusion indeed does not follow?
Edit: Resolution
[3,6] 9. ~C(r)
[4,5] 10. W(r) v C(r)
[9,10] 11. W(r)
[8,1] 12. L(j,s)
[12,2] 13. ~D(y) v L(j,y)
[11,7] 14. ~L(j,r)
[13,14] 15. ~D(r)
Thank you for your help!
The conclusion is correct.
I will let you tidy this up and fill in the gaps, but you might want to consider the following