Как я могу определить разные в прологе?

Как я могу определить, что две переменные не равны в Прологе? Например:

z is X and Y parent

X is male and Y is female

Теперь я хочу найти сестер или братьев. Но результат Пролога таков:

Y sister Y when parent have one child and not have X

Теперь я хочу определить:

different(X,y).

Я думаю, что старая или другая версия Visual Prolog имеет "другое" в библиотеке, но я не нахожу это в новом Visual Prolog. Что я могу сделать?

2 ответа

Решение

Определить две переменные не равны в Прологе:

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

Эквивалентность в Прологе ==/2, Это также определяется между переменными. В частности, он не объединяет две разные переменные как =/2 было бы.

Несколько простых примеров:

?- X = Y.
X = Y.
?- X == Y.
false.

А также:

?- X = X.
true.
?- X == X.
true.

Поскольку вы специально просите о равенстве между переменными, мне интересно, просите ли вы о чем-то большем, чем эквивалентность. Равенство иногда определяется как эквивалентность при замене. Чтобы a = b подразумевает f(..., a, ...) = f(..., b, ...),

В Прологе, похоже, это тоже так:

?- f(a, B1, c) = f(a, B2, c).
B1 = B2.
?- f(a, B1, c) == f(a, B2, c).
false.

А также:

?- f(a, B, c) = f(a, B, c).
true.
?- f(a, B, c) == f(a, B, c).
true.

Надеюсь это поможет!

Другие вопросы по тегам