Подтвердить что ты не робот

Знак "Не равный" в Visual Prolog?

Я не могу найти документацию на знаке "не равно" в Visual Prolog. Пожалуйста, предоставьте правильное решение этой проблемы:

class predicates
        sister : (string Person, string Sister) nondeterm(o,o).
    clauses
        sister(Person, Sister) :-
            Person [not-equal-sign] Sister,
            parent(Person, Parent),
            parent(Sister, Parent),
            woman(Sister).

Спасибо заранее!

4b9b3361

Ответ 1

Я не знаю, что вы подразумеваете под "не равным" (не объединяется?), но вы можете попробовать:

X \= Y
not(X = Y)
\+ (X = Y)

Ответ 2

Документация по второму варианту, указанному Kaarel, находится в эта ссылка на Visual Prolog.

Однако проблема с вашим кодом идет немного глубже. Вам нужно дождаться тестирования неравновесия до тех пор, пока оба слова Person и Sister не будут связаны, поэтому переупорядочивайте такие вещи:

    sister(Person, Sister) :-
        parent(Person, Parent),
        parent(Sister, Parent),
        not(Person = Sister),
        woman(Sister).

Существует также синтаксис для инфиксного оператора "< > ", который означает различные (или разные). Как только эти два члена связаны, это должно дать тот же результат, что и проверка того, нельзя ли унифицировать термины, что и делает вышеуказанная конструкция.