Первое решение возвращает первого человека, который обнаружил, что одному из двух людей нравится, если эти два человека любят друг друга.
likes(alice,bob).
likes(bob,alice).
likes(alice,jeff).
likes(jeff,alice).
friends_aux(X, Y, Z) :- likes(Y, Z), Z \= X.
friends_aux(X, Y, Z) :- likes(X, Z), Z \= Y.
friends(X, Y, Z) :- likes(X, Y), likes(Y, X), friends_aux(X, Y, Z), !.
И второе решение возвращает истину, если у любого из этих двух людей есть любая другая пара.
friends2_aux(X, Y) :- likes(Y, Z), Z \= X.
friends2_aux(X, Y) :- likes(X, Z), Z \= Y.
friends2(X, Y) :- likes(X, Y), likes(Y, X), friends2_aux(X, Y), !.
Я приложил изображение результатов.
Результаты
Надеюсь, это то, что вы хотели.