Полный пролог для новичков здесь.
Допустим, у меня есть база знаний по прологу, которая содержит, например, еду и ее цену. :
food(banana,99).
и т. Д.
Я пытаюсь написать предикат, который вернет истину, если в базе знаний есть два или более элементов, имеющих одинаковую цену. Проблема, с которой я сталкиваюсь, заключается в том, что написанный мной запрос:
multiple(X) :- food( _ ,X), food( _ ,X).
вернет истину, если в базе данных есть только один элемент с ценой X. Я понимаю, в чем проблема (что он находит один и тот же элемент дважды и возвращает правда), но я не понимаю, как написать запрос, который найдет два или более уникальных предметов из еды.
Я пробовал написать «уникальное» правило, а именно:
multiple(X) :- food(Y,X), food(Z,X), unique(Y,Z).
unique(Y,Z) :- Y /= Z
Но, похоже, это не работает.
Спасибо.