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