64 Fol Resolution
64 Fol Resolution
1a. eliminate <=> A <=> B A => B ^ B => A 1b. eliminate => A => B ~A B
reduction to CNF
1. 2. 3. 4. 5. 6. 7. eliminate => and <=> move negatives inward to predicates Standardize apart variables Skolemize (eliminate existentials) Drop universals (assumed for variables) Distribute conjunction over disjunction Standardize apart again if necessary
D Goforth - COSC 4117, fall 2003 4
All people who are smart and not poor are happy. Those people who read are not stupid. Happy people have exciting lives. John can read and is wealthy. Can anyone be found who has an exciting life?
x (Smart(x) ~Poor(x)) => Happy(x) x Read(x) => ~Stupid(x) x Happy(x) => Exciting(x) Read(John) Wealthy(John) x Exciting(x)
All people who are smart and not poor are happy. Those people who read are not stupid. Happy people have exciting lives. John can read and is wealthy. Can anyone be found who has an exciting life?
x (Smart(x) ~Poor(x)) => Happy(x) x Read(x) => ~Stupid(x) x Happy(x) => Exciting(x) Read(John) Wealthy(John) x Exciting(x)
x (Smart(x) ~Poor(x)) => Happy(x) x Read(x) => ~Stupid(x) x Happy(x) => Exciting(x) Read(John) Wealthy(John) x Exciting(x) x Wealthy(x) <=> ~Poor(x) x Smart(x) <=> ~Stupid(x) x ~(Smart(x) ~Poor(x)) Happy(x)
x (Smart(x) ~Poor(x)) => Happy(x) x Read(x) => ~Stupid(x) x Happy(x) => Exciting(x) Read(John) Wealthy(John) x Exciting(x) x Wealthy(x) <=> ~Poor(x) x Smart(x) <=> ~Stupid(x) x ~(Smart(x) ~Poor(x)) Happy(x) x ~Read(x) ~Stupid(x) x ~Happy(x) Exciting(x) Read(John) Wealthy(John) x Exciting(x) x ~Wealthy(x) ~Poor(x) x Wealthy(x) Poor(x) x Smart(x) Stupid(x) x ~Smart(x) ~Stupid(x)
x ~(Smart(x) ~Poor(x)) Happy(x) x ~Smart(x) Poor(x) Happy(x) x ~Read(x) ~Stupid(x) x ~Happy(x) Exciting(x) Read(John) Wealthy(John) x Exciting(x) x ~Wealthy(x) ~Poor(x) x Wealthy(x) Poor(x) x Smart(x) Stupid(x) x ~Smart(x) ~Stupid(x)
(2. ~ inwards)
x ~Smart(x) Poor(x) Happy(x) y ~Read(y) ~Stupid(y) z ~Happy(z) Exciting(z) Read(John) Wealthy(John) v Exciting(v) (4. Skolemize) Exciting(K) u ~Wealthy(u) ~Poor(u) t Wealthy(t) Poor(t) s Smart(s) Stupid(s) r ~Smart(r) ~Stupid(r)
5. Drop universals
~Smart(x) Poor(x) Happy(x) ~Read(y) ~Stupid(y) ~Happy(z) Exciting(z) Read(John) Wealthy(John) Exciting(K) ~Wealthy(u) ~Poor(u) Wealthy(t) Poor(t) Smart(s) Stupid(s) ~Smart(r) ~Stupid(r)
12
13
14
Question in CNF
~Smart(x) Poor(x) Happy(x) ~Read(y) ~Stupid(y) ~Happy(z) Exciting(z) Read(John) Wealthy(John) ~Wealthy(u) ~Poor(u) Wealthy(t) Poor(t) Smart(s) Stupid(s) ~Smart(r) ~Stupid(r) Exciting(K)
15
16
~Exciting(k)
~Happy(z) Exciting(z)
{k/z}
~Happy(k) ~Smart(x) Poor(x) Happy(x) ~Smart(x) Poor(x) Happy(x) {k/x} ~Read(y) ~Stupid(y) ~Smart(k) Poor(k) ~Happy(z) Exciting(z) Read(John) ~Read(y) ~Stupid(y) Wealthy(John) {y/s} ~Wealthy(u) ~Poor(u) Smart(s) Stupid(s) Wealthy(t) Poor(t) ~Read(y) Smart(y) Smart(s) Stupid(s) {k/y} ~Smart(r) ~Stupid(r) ~Read(k) Poor(k) ~Exciting(k) ~Wealthy(u) ~Poor(u) {John/u}
{John/k}
~Read(John) {} nil
~Poor(John) Read(John)
Wealthy(John)
initial assumption of
so
~x Exciting(x) is wrong
x Exciting(x)
19