I have a question on my assignment that I'm having a great deal of trouble with.

In this question we will

consider a simplified model of the ?People you may know? application in Facebook. The

basic idea is that if two people have a common friend, then they may know each other. We

will also take into account the fact in Facebook the relation ?friend? is symmetric, that is,

if X is a friend of Y , then Y is a friend of X.

Thus, as a problem description P, we have the following two predicate logic sentences:

XY [(Z(friend(X, Z) ^ friend(Z, Y ))) may know(X, Y )]

XY [friend(X, Y ) friend(Y,X)]

Our goal is to show, using resolution refutation, that the following sentence g is implied by P:

XY [may know(X, Y ) may know(Y,X)]

I have derived the following clauses (this is for a logical programming class):

c1: may_know(X,Y) :- friend(X,T), friend(T,Y)

c2: friend(X,f(X,Y,T)) :- may_know(X,Y)

c3: friend(f(X,Y,T),Y) :- may_know(X,Y)

c4: friend(Y,X) :- friend(X,Y)

c5: may_know(d,e) :-

c6: :- may_know(e,d)

I've attempted linear refutation which won't work. The question goes on to advise that you prove g from p "using your normal, mathematical, reasoning. Then, try to re-create the steps of your proof using resolution on your clauses." This is where I'm stuck, I'm not sure how I can prove g from p using either my clauses or my ordinary mathematical reasoning. Any help with this would be greatly appreciated.