# asst3soln2006

```Solution to Assignment 3, COSC 4117, due Dec 6, 2006
#1 page 316, #9.4
a. P(A,B,B), P(x,y,z) unified by Subst{x/A,y/B,z/B}
b. Q(y,G(A,B)),Q(G(x,x),y) y must be substituted with
G(A,B) and G(x,x) if the predicates are to be unified.
G(A,B) and G(x,x) cannot be unified if A and B are
distinct objects because x must be substituted by A and
B in unifying.
c. Older(Father(y),y), Older(Father(x), John) unified by
Subst{y/John, x/John}
d. Knows(Father(y),y), Knows(x,x) Assuming Father(y)
identifies the object that is the father of object
referenced by y and hence cannot be the same object,
these predicates cannot be unified because x must be
substituted with both y and Father(y).
#2 page 316, #9.9
(1)
x (Pig(x)  Cow(x)  Horse(x)) =&gt; Mammal(x)
(2)
x y (Offspring(x,y)  Horse(y)) =&gt; Horse(x)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5)
x y Parent(y,x) &lt;=&gt; Offspring(x,y)
(6)
x Mammal(x) =&gt; y Parent(y,x)
#3
CNF
Eliminate biconditionals and implications
(1)
x ~(Pig(x)  Cow(x)  Horse(x))  Mammal(x)
(2)
x y ~(Offspring(x,y)  Horse(y))  Horse(x)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5a) x y ~Parent(y,x)  Offspring(x,y)
(5b) x y ~Offspring(x,y)  Parent(y,x)
(6)
x ~Mammal(x)  y Parent(y,x)
Move negatives inwards
(1)
x (~Pig(x)  ~Cow(x)  ~Horse(x))  Mammal(x)
(2)
x y (~Offspring(x,y)  ~Horse(y))  Horse(x)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5a) x y ~Parent(y,x)  Offspring(x,y)
(5b) x y ~Offspring(x,y)  Parent(y,x)
(6)
x ~Mammal(x)  y Parent(y,x)
Standardize variables
(1)
x (~Pig(x)  ~Cow(x)  ~Horse(x))  Mammal(x)
(2)
z y ~Offspring(z,y)  ~Horse(y)  Horse(z)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5a) v w ~Parent(w,v)  Offspring(v,w)
(5b) t s ~Offspring(t,s)  Parent(s,t)
(6)
r ~Mammal(r)  p Parent(p,r)
Skolemize existential
(6)
r ~Mammal(r)  Parent(P(r),r)
Drop universals
(1)
(~Pig(x)  ~Cow(x)  ~Horse(x))  Mammal(x)
(2)
~Offspring(z,y)  ~Horse(y)  Horse(z)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5a) ~Parent(w,v)  Offspring(v,w)
(5b) ~Offspring(t,s)  Parent(s,t)
(6)
~Mammal(r)  Parent(P(r),r)
Distribute  over 
(1a) ~Pig(x)  Mammal(x)
(1b) ~Cow(x)  Mammal(x)
(1c) ~Horse(x)  Mammal(x)
(2)
~Offspring(z,y)  ~Horse(y)  Horse(z)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5a) ~Parent(w,v)  Offspring(v,w)
(5b) ~Offspring(t,s)  Parent(s,t)
(6)
~Mammal(r)  Parent(P(r),r)
Standardize variables again
(1a) ~Pig(x)  Mammal(x)
(1b) ~Cow(m)  Mammal(m)
(1c) ~Horse(n)  Mammal(n)
(2)
~Offspring(z,y)  ~Horse(y)  Horse(z)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5a) ~Parent(w,v)  Offspring(v,w)
(5b) ~Offspring(t,s)  Parent(s,t)
(6)
~Mammal(r)  Parent(P(r),r)
To show Charlie is a mammal, add the opposite statement to the
KB:
(1a) ~Pig(x)  Mammal(x)
(1b) ~Cow(m)  Mammal(m)
(1c) ~Horse(n)  Mammal(n)
(2)
~Offspring(z,y)  ~Horse(y)  Horse(z)
(3)
Horse(Bluebeard)
(4)
Parent(Bluebeard,Charlie)
(5a) ~Parent(w,v)  Offspring(v,w)
(5b) ~Offspring(t,s)  Parent(s,t)
(6)
~Mammal(r)  Parent(P(r),r)
(7)
~Mammal(Charlie)
Use resolution to establish a contradiction if possible
With Subst({Charlie/n}), unify Mammal() and resolve (1c),(7)
(8)
~Horse(Charlie)
With Subst({Charlie/z}), unify Horse() and resolve (2),(8)
(9)
~Offspring(Charlie,y)  ~Horse(y)
With Subst({Bluebeard/y}), unify Horse() and resolve (3),(9)
(10) ~Offspring(Charlie,Bluebeard)
With Subst({Bluebeard/w, Charlie/v}), unify Offspring() and
resolve (5a),(10)
(11) ~Parent(Bluebeard, Charlie)
Without substitution, resolve (4) and (11)
(12) NIL
This contradiction refutes the assumption ~Mammal(Charlie) so
Mammal(Charlie); Charlie is a mammal.
4.
Planning in Blocks World (as developed in lecture)
Actions
Move(b,x,y)
PRE:On(b,x)^Clear(b)^Clear(y)^Block(b)^Block(y)
EFFECT:~On(b,x)^~Clear(y)^Clear(x)^On(b,y)
MoveToTable(b,x)
PRE:On(b,x)^Clear(b)^Block(b)
EFFECT:~On(b,x)^Clear(x)^On(b,T)
Plan:
START
causal
Preconditions: NIL

Effect: On(A,T)^On(B,T)^On(C,A)
^Clear(B)^Clear(C)^Clear(T)
^Block(A)^Block(B)^Block(C)
MOVETOTABLE(C,A)
Preconditions:Clear(C)^On(C,A)^
Block(C)
Effect:~On(C,A)^Clear(A)
^On(C,T)
MOVE(B,T,C)
Preconditions:Clear(B)^Clear(C)^
On(B,T)^Block(B)^Block(C)
Effect:~On(B,T)^~Clear(C)^
Clear(T)^On(B,C)^~On(B,T)
MOVE(A,T,B)
Preconditions:Clear(A)^Clear(B)^
On(A,T)^Block(A)^Block(B)
Effect:~On(A,T)^~Clear(B)^
Clear(T)^On(A,B)^~On(A,T)
FINISH
Preconditions:On(A,B)^On(B,C)
open {}
Effect: NIL
SOLUTION:
The initial state of the problem:
On(A,T)^On(B,T)^On(C,A)
^Clear(B)^Clear(C)^Clear(T)
^Block(A)^Block(B)^Block(C)
Action: MoveToTable(C,A) EFFECT:~On(C,A)^Clear(A)^On(C,T)
On(A,T)^On(B,T)^On(C,T)
^Clear(B) ^Clear(C) ^Clear(A)^Clear(T)
^Block(A)^Block(B)^Block(C)
Action: Move(B,T,C) EFFECT:~On(B,T)^~Clear(C)^On(B,C)
On(A,T)^On(B,C)^On(C,T)
^Clear(B) ^Clear(A)^Clear(T)
^Block(A)^Block(B)^Block(C)
Action: Move(A,T,B) EFFECT:~On(A,T)^~Clear(B)^On(A,B)
On(A,B)^On(B,C)^On(C,T)
^ Clear(A)^Clear(T)
^Block(A)^Block(B)^Block(C)
== goal state
plan is {MoveToTable(C,A),Move(B,T,C),Move(A,T,B)}
A non-interleaved planner will not solve the problem because
it concatenates plans for individual goals: On(A,B) and
On(B,C) In either order, from the given start state, the
second plan destroys the result of the first.
I On(A,B) then On(B,C)
1. plan: MoveToTable(C,A), Move(A,T,B)  On(A,B)
2. plan: MoveToTable(A,B), Move(B,T,C)  On(B,C) but ~On(A,B)
OR
II On(B,C) then On(A,B)
1. plan: Move(B,T,C)  On(B,C)
2. plan: MoveToTable(B,C), MoveToTable(C,A),Move(A,T,B) 
On(A,B) but ~On(B,C)
NOTE: full marks were given for a sequential plan (with KB
changes) and/or for the plan graph
```