【发布时间】:2018-12-19 18:53:52
【问题描述】:
这里引自 Blackburn 和 Bos 的书“自然语言的表示和推理”。
:- op(900,yfx,>). % implication
:- op(850,yfx,v). % disjunction
:- op(800,yfx,&). % conjunction
:- op(750, fy,-). % negation
正如预期的那样,否定比连词具有更高的优先级。
现在查看 SWI Prolog docs
\+ - 否定作为失败的优先级 (900) 低于 /\ 连词 (500)。
我读对了吗?
SWI Prolog 中是否还有另一个否定符号?我知道有not,但它只是为了向后兼容而保留的。
加法~在SWI Prolog中有含义吗?
【问题讨论】:
-
您可以通过调用标准
current_op/3谓词,通过回溯枚举Prolog系统中定义的所有运算符。 -
相关,请参阅
logicLogtalk 示例github.com/LogtalkDotOrg/logtalk3/tree/master/examples/logic -
标准 Prolog 没有定义运算符
&和v。您看到的 /\ 运算符(我相信)用于算术表达式;通常的逻辑合取和析取运算符分别是,和;,它们应该与Prolog 的否定\+匹配。 \ 中的算术有一个补码否定,但令人惊讶的是没有逻辑/布尔否定。 -
不要重新定义已经存在的运算符,例如
>和-。这将带来严重破坏。而是让自己的运营商。比如.>代替>等。 -
这也会在一次练习中造成严重破坏。
标签: prolog negation iso-prolog