Sunteți pe pagina 1din 15

Resolution Proof Example

Prateek Tandon, John Dickerson


Robot Doom Domain
1. Jack owns a roomba
2. Every roomba owner is a robot enthusiast.
3. No robot enthusiast breaks a robot.
4. Either Jack or SENSOR MALFUNCTION broke
my roomba.

Question: Did SENSOR MALFUNCTION break my
roomba?
Write in First Order Logic
1. Jack owns a roomba


2. Every roomba owner is a robot enthusiast.


1. No robot enthusiast breaks a robot.


2. Either Jack or SENSOR MALFUNCTION broke my roomba.




-xRoomba(x).Owns(Jack, x)

x[-yRoomba(y).Owns(x, y)]Robot_enthusiast(x)

xRobot _enthusiast(x) [yRobot(y) Breaks(x, y)]

Breaks(Jack,myRoomba)vBreaks(S.M.,myRoomba)

Roomba(myRoomba)
xRoomba(x) Robot(x)
Some Additional Facts:
Algorithm for Converting FOL to CNF
1. Eliminate Implications
2. Move negation inward
3. Standardize variables
4. Skolemization
5. Drop universal quantifiers
6. Apply distributivity






Convert to CNF
Step 1: Eliminate Implications

-xRoomba(x) .Owns(Jack, x)
x(-yRoomba(y) .Owns(x, y))v Robot_enthusiast(x)
xRobot_enthusiast(x) vyRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) v Breaks(S.M.,myRoomba)
Roomba(myRoomba)
xRoomba(x) v Robot(x)
Replace pq with not p or q
Convert to CNF
Step 2: Move Negation Inward

-xRoomba(x) .Owns(Jack, x)
x(yRoomba(y) vOwns(x, y))v Robot_enthusiast(x)
xRobot_enthusiast(x) vyRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) v Breaks(S.M.,myRoomba)
Roomba(myRoomba)
xRoomba(x) v Robot(x)
Apply Demorgans Laws, change quantifiers, etc.

(AvB) A.B
(A.B) AvB

xA(x) -xA(x)
-xA(x) xA(x)
Convert to CNF
Step 3: Standardize Variables
If two variables have the same name, then
change the name of one of the variables (no
modification in this example)


-xRoomba(x) .Owns(Jack, x)
x(yRoomba(y) vOwns(x, y))v Robot_enthusiast(x)
xRobot_enthusiast(x) vyRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) v Breaks(S.M.,myRoomba)
Roomba(myRoomba)
xRoomba(x) v Robot(x)
Convert to CNF
Step 4: Skolemization
Skolemization the process of removing
existential quantifiers by elimination.
General Rule: Arguments of the skolem function are all the universally
quantified variables in whose scope the existential quantifier appears.

Roomba(R) .Owns(Jack, R)
x(yRoomba(y) vOwns(x, y))v Robot_enthusiast(x)
xRobot_enthusiast(x) vyRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) v Breaks(S.M.,myRoomba)
Roomba(myRoomba)
xRoomba(x) v Robot(x)
Convert to CNF
Step 5: Drop Universal Quantifiers

Roomba(R) .Owns(Jack, R)
(Roomba(y) vOwns(x, y))v Robot_enthusiast(x)
Robot_enthusiast(x) vRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) v Breaks(S.M.,myRoomba)
Roomba(myRoomba)
Roomba(x) v Robot(x)
Pretty Easy
Convert to CNF
Step 6: Apply Distributivity
Nothing much to do in this examplebut you
know how to do this well after problem 1.

Roomba(R)
Owns(Jack, R)
Roomba(y) vOwns(x, y) vRobot_enthusiast(x)
Robot_enthusiast(x) vRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) vBreaks(S.M.,myRoomba)
Roomba(myRoomba)
Roomba(x) vRobot(x)
Assert Negation of Conclusion

Breaks(S.M.,myRoomba)

Breaks(S.M.,myRoomba)
What we want to
conclude:
Negation of
conclusion:
Resolution Rule
(simplified)

avb,avc

bvc
Apply Resolution

Breaks(S.M,myRoomba)

Breaks(Jack,myRoomba)vBreaks(S.M.,myRoomba)

Breaks(Jack,myRoomba)

Roomba(R)
Owns(Jack, R)
Roomba(y) vOwns(x, y) vRobot_enthusiast(x)
Robot_enthusiast(x) vRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) vBreaks(S.M.,myRoomba)
Roomba(myRoomba)
Roomba(x) vRobot(x)

Robot_enthusiast(x)vRobot(y)vBreaks(x, y)

Robot_enthusiast(Jack)vRobot(myRoomba)

Roomba(y)vOwns(x, y)vRobot_enthusiast(x)

Robot(myRoomba) vRoomba(y)
vOwns(Jack, y)
Apply Resolution (continued)

Roomba(R)
Owns(Jack, R)
Roomba(y) vOwns(x, y) vRobot_enthusiast(x)
Robot_enthusiast(x) vRobot(y) vBreaks(x, y)
Breaks(Jack, myRoomba) vBreaks(S.M.,myRoomba)
Roomba(myRoomba)
Roomba(x) vRobot(x)

Robot(myRoomba)vRoomba(y)vOwns(Jack, y)

Roomba(R)

Robot(myRoomba)vOwns(Jack,R)

Owns(Jack,R)

Robot(myRoomba)

Roomba(x)vRobot(x)

Roomba(myRoomba)

Roomba(myRoomba)
FALSE
So negated conclusion is wrong.
So original statement must be right.
Practical Aspects of Logic
Jess Rule-Based System for Java
(http://herzberg.ca.sandia.gov)
Wolfram-Alpha Logic Engine
MATLAB toolbox

S-ar putea să vă placă și