である(A,B) :- 同一人物(A,B).
である(A,B) :- 同一人物(A,C),である(C,B).
同一人物(コナン,工藤真一).
好きだ(工藤真一,蘭).
好きだ(A,B) :- である(A,C),好きだ(C,B).
好きだ(A,B) :- である(B,C),好きだ(A,C).
/* 大体こんな感じになるのでは。でも相当問題が残っている */
?- 好きだ(X,Y). /* はうまくいく。 */