# Comparison of backward chaining (applying Generalized Modus Ponens) # and resolution theorem proving. Prolog: z(X) :- p(X),q(X). p(Y) :- r(Y). q(Z) :- s(Z),t(Z). s(a). t(a). r(a). Goal is to prove z(a). z(X) :- p(X),q(X). X/a Prove p(a) p(a) :- r(a) Prove r(a) ... yes Prove q(a) q(a) :- s(a),t(a) Prove s(a) ... yes Prove t(a) ... yes Logical sentences the Prolog sentences correspond to: 1. All X ((p(X) ^ q(X)) --> z(X)). 2. All Y ((r(Y) --> p(Y))). 3. All Z ((s(Z) ^ t(Z)) --> q(Z)). 4. s(a). 5. t(a). 6. r(a). In CNF: 1. -p(var_x) | -q(var_x) | z(var_x) 2. -r(var_y) | p(var_y) 3. -s(var_z) | -t(var_z) | q(var_z) 4. s(a). 5. t(a). 6. r(a). Goal: z(a)? Negation of goal: -z(a). p1: -z(a) p2: -p(var_x) | -q(var_x) | z(var_x) r: -p(a) | -q(a) p1: -p(a) | -q(a) p2: -r(var_y) | p(var_y) r: -r(a) | -q(a) p1: -r(a) | -q(a) p2: r(a). r: -q(a). p1: -q(a). p2: -s(var_z) | -t(var_z) | q(var_z). r: -s(a) | -t(a) p1: -s(a) | -t(a) p2: s(a). r: -t(a). p1: -t(a). p2: t(a). r: {}