事実について「一般的に」どのように述べればよいでしょうか? 「誰もが彼/彼女を好きな人を好きだ」と述べる必要があり、お互いに好きかもしれないし嫌いかもしれない人々のリストがあるとします。
これは私がこれまでに試したことですが、それを行う方法ではないことは確かです:
likes(dana, cody).
hates(bess, dana).
hates(cody, abby).
likes(first(Girl, OtherGirl), first(OtherGirl, Girl)).
hates(Girl, OtherGirl):- \+ likes(Girl, OtherGirl).
これはコンパイルすらできないからです。
everybody([dana, cody, bess, abby]).
likes_reflexive(dana, cody).
hates(bess, dana).
hates(cody, abby).
likes_reflexive(X, Y):- likes(X, Y), likes(Y, X).
hates(Girl, OtherGirl):- \+ likes(Girl, OtherGirl).
%% likes_reflikes_reflexive(X, Y):- likes(X, Y), likes(Y, X).
%% user:6: warning: discontiguous predicate likes_reflexive/2 - clause ignored
%% hates(Girhates(Girl, OtherGirl):- \+ likes(Girl, OtherGirl).
%% user:8: warning: discontiguous predicate hates/2 - clause ignored
残念ながら、警告の意味がわかりません。私の意図がより明確になることを願っています。つまり、1 つの事実を述べることで、関連するもう 1 つの事実も述べたいと思います。