我怎样才能在Prolog中定义不同的东西?

时间:2014-04-17 17:02:04

标签: prolog visual-prolog

如何定义Prolog中两个变量不相等?例如:

z is X and Y parent

X is male and Y is female

现在我想找到姐妹或兄弟。但是Prolog的结果是:

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

现在我想要定义:

different(X,y).

我认为Visual Prolog的旧版或其他版本有不同的版本。在图书馆,但我没有在新的Visual Prolog中找到这个。我该怎么办?

2 个答案:

答案 0 :(得分:1)

在Prolog中定义两个变量不相等:

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

答案 1 :(得分:0)

Prolog中的

等效==/2。这也是在变量之间定义的。具体而言将两个不同的变量统一为=/2

一些简单的例子:

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

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

由于你特别要求变量之间的相等,我想知道你是否要求的不仅仅是等价。平等有时被定义为替代下的等同。因此a = b暗示f(..., a, ...) = f(..., b, ...)

在Prolog中,情况似乎也是如此:

?- 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.

希望这有帮助!