1. ## predicate logic proofs

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.

2. Think "may know(X, Y )" is not a Proposition.