 
e(a,a).
q(X,Y)       :- e(X,Y).
q(X,f(f(X))) :- p(X,f(f(X))), q(X,f(X)).
q(X,f(f(Y))) :- p(X,f(Y)).
 
p(X,Y)       :- e(X,Y).
p(X,f(Y))    :- r(X,f(Y)), p(X,Y).
 
r(X,Y)       :- e(X,Y).
r(X,f(Y))    :- q(X,Y), r(X,Y).
r(f(X),f(X)) :- t(f(X),f(X)).
 
t(X,Y)       :- e(X,Y).
t(f(X),f(Y)) :- q(f(X),f(Y)), t(X,Y).