Как лучше всего выразить отношение общего порядка в Прологе?
Например, скажем, у меня есть набор фактов
person(tim)
person(ana)
person(jack)
...
, и я хочу выразить следующую правдуо судьбе человека: для каждых двух людей X и Y, если нет (X == Y), либо X богаче, чем Y, либо Y богаче, чем X.
Так что моя проблема заключается в том, что более богатое предложение должнобыть способным создавать экземпляры своих переменных, а также гарантировать, что никогда не бывает, чтобы богаче (X, Y) и богаче (Y, X) одновременно.
Вот лучший пример, чтобы увидеть, что яmean:
person(tim).
person(john).
happier(tim, john).
hates(X, Y) :- person(X), person(Y), richer(Y, X).
hates(X, Y) :- person(X), person(Y), richer(X, Y), happier(Y, X).
Теперь ответ на запрос hates (john, tim) должен возвращать true, потому что, если richer удовлетворяет указанному свойству, одно из этих двух предложений hates должно быть истинным.В механизме логического вывода на основе разрешения я мог бы утверждать, что факт (богаче (X, Y) V богаче (Y, X)) и предикатные ненависти (Джон, Тим) могут быть подтверждены.Я не ожидаю, что смогу выразить это таким же образом в Прологе с тем же эффектом.Однако как я могу реализовать это условие, чтобы данный пример работал?
Обратите внимание, что я не знаю, кто богаче: Тим или Джон.Я только сейчас, что один богаче другого.
Спасибо.