Prolog 条件的结合

Prolog 条件的结合,prolog,turbo-prolog,Prolog,Turbo Prolog,我对prolog很陌生,现在只知道最基本的内容 我遇到了一个问题 我需要写一行语句:和(或) 在C++语言中,它看起来是这样的: if(<cond.1> && (<cond.2> || <cond.3>)) { /*...*/ } if(&&(| |){/*…*/} 我在序言中试过: statement(X, Y, Z, W):-condition(X,Y,Z,W), !, X <> Z or Y <> W. 语句

我对prolog很陌生,现在只知道最基本的内容 我遇到了一个问题

我需要写一行语句:
和(或)

在C++语言中,它看起来是这样的:

if(<cond.1> && (<cond.2> || <cond.3>)) { /*...*/ }
if(&&(| |){/*…*/}
我在序言中试过:

statement(X, Y, Z, W):-condition(X,Y,Z,W), !, X <> Z or Y <> W.
语句(X,Y,Z,W):-条件(X,Y,Z,W)!,X Z或Y W。
还有这个

statement(X, Y, Z, W):-condition(X,Y,Z,W) and (X <> Z or Y <> W).
语句(X,Y,Z,W):-条件(X,Y,Z,W)和(X Z或Y W)。
还有谷歌告诉我的更多事情。什么都不起作用,我知道这个逻辑语句在扩展形式中会是这样的:
和或

但这会创建大量代码,使其无法读取。我只是觉得必须有一种方法在括号内实现这些条件。但是我就是不知道怎么做,也找不到任何方法来做。

逻辑或用分号(
)表示。因此,您的谓词可能如下所示:

statement(X, Y, Z, W) :-
    condition(X,Y,Z,W),
    (X \= Z; Y \= W).
语句(X,Y,Z,W):- 条件(X,Y,Z,W), (X\=Z;Y\=W)。
在这里,如果不能将
X
Z
(或
Y
W
)统一,则会成功。

我发现了一些关于这个问题的信息:如果我写这样的
cond(X,Y):-(X=Y)。
它会告诉我等号前的一个错误
406')或“,”预期的
,这让我很奇怪,bc这类括号怎么会不起作用呢?“or”是分号,所以
,和的逗号
;而且
xz
可能是
X\=Z
@WillemVanOnsem-nope。我也试过了,因为某些原因,只有括号不起作用。在
X\=Z
的在线Prolog shell中,它显示“非法字符”。因此,使用
xz
时,它工作正常,但仍然会在之后显示
406')或“,”预期的
X@ZecosMAX:则错误可能位于
语句
定义之前。例如,您忘记了一个小句末尾的点,或括号等,而不是这个。好吧,我可以把我所有的代码都放在这里(但我认为这不是一个好的语气),我检查了10次。一切都应该很好,但事实并非如此。idk为什么。另外,由于某种原因,我的turbo prolog版本不接受符号“\”,因此
true(X):-\+false(X)。
不会work@ZecosMAX:这看起来很奇怪,因为
\+
是一个ISO Prolog谓词,这意味着所有称自己为“标准化Prolog”的东西都应该支持它。