Как я могу определить разные в прологе?
Как я могу определить, что две переменные не равны в Прологе? Например:
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.
Надеюсь это поможет!