Различные результаты запроса в прологе

У меня вопрос по прологу. Вот База Знаний.

loves(vincent,mia).
loves(marcellus,mia).
loves(pumpkin,honey_bunny).
loves(honey_bunny,pumpkin).

jealous(X,Y) :-
   loves(X,Z),
   loves(Y,Z).

Это из книги "Изучите Prolog сейчас". Теперь, если я сделаю запрос ?- jealous(marcellus,W)., он вернет это W = vincent, но если я задам запрос ?- jealous(vincent,W)., результатом будет W=vincent Так что это означает, что Винсент завидует себе, а Марселлус не завидует себе. Почему ответ другой? Я использую swipl в Ubuntu Linux, который находится в VirtualBox на winxp. Я новичок в Прологе.

Спасибо


person Community    schedule 06.10.2012    source источник


Ответы (1)


После ответа W = vincent на запрос ?- jealous(marcellus,W). введите ; вместо Enter и получите W = marcellus. Необходимо добавить то, что X \= Y в jealous/2.

person joel76    schedule 06.10.2012
comment
В SWI или GNU вы также можете ввести ПРОБЕЛ, что немного удобнее. - person false; 06.10.2012