gpt4 book ai didi

prolog - Prolog 中的逻辑 'not' 是什么?

转载 作者:行者123 更新时间:2023-12-03 07:49:13 25 4
gpt4 key购买 nike

我面临的问题有点微不足道。
我想在 Prolog 中不使用逻辑,但似乎 not/1不是我想要的东西:

course(ai).
course(pl).
course(os).

have(X,Y) :- course(X),course(Y),not(X = Y).

我查询:
have(X,Y), write(X-Y), nl , fail.

我没有得到我想要的结果:(

最佳答案

代替 not(X = Y)你需要写 \+ X = YX \= Y .但考虑使用 dif(X,Y)反而。 dif/2存在于 B、SWI、YAP、SICStus。要查看差异:

?- X = b, dif(a, X).
X = b.

?- X = b, \+ a = X.
X = b.

所以到目前为止一切似乎都很好。但是,如果我们只是
交换两个目标的顺序?
?- \+ a = X, X = b.
false.

?- dif(a, X), X = b.
X = b.
(\+)/1现在给了我们一个不同的结果,因为有一个答案
a = X ,目标 \+ a = X将失败。
(\+)/1因此不是否定,但意味着此时不可证明
及时。

A safe approximationdif/2在 ISO Prolog 中也是可能的。

关于prolog - Prolog 中的逻辑 'not' 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8523608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com