Как мне вернуть уникальные результаты из знания base in Prolog?

Полный пролог для новичков здесь.

Допустим, у меня есть база знаний по прологу, которая содержит, например, еду и ее цену. :

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

Но, похоже, это не работает.

Спасибо.

0
задан dmallory42 29 February 2012 в 17:10
поделиться