gpt4 book ai didi

prolog - 寻求 (\=)/2 的纯 Prolog 实现

转载 作者:行者123 更新时间:2023-12-04 17:22:30 28 4
gpt4 key购买 nike

作为失败的否定通常被认为是不纯的。否定失败所需的Prolog解释器必须实现SLDNF,它是SLD的扩展。

谓词 (\=)/2 例如在库 (reif) 中使用。它可以通过否定作为失败引导,如下所示,但通常是内置的:

X \= Y :- \+ X = Y.

是否可以将 (\=)/2 作为一个纯谓词来实现?仅使用纯 Prolog,即仅使用一阶喇叭子句?

最佳答案

Would it be possible to implement (=)/2 as a pure predicate? Using only pure Prolog, i.e. only first order horn clauses?

您不能在纯 Prolog 中实现 (\=)/2

证明:

在逻辑中,合取是可交换的,纯 Prolog 查询如果终止,则必须是合乎逻辑的。

但是,对于 (\=)/2,术语的顺序很重要,因此不符合逻辑:

?- X \= Y, X=0, Y=1.
false.

?- X=0, Y=1, X \= Y.
X = 0,
Y = 1.

关于prolog - 寻求 (\=)/2 的纯 Prolog 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65364063/

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