在prolog中别名`(not)/ 1`

时间:2012-07-24 23:40:37

标签: prolog alias negation

我收到了一段名为exShell的作业代码。在其中,代码使用(not)/1进行否定,我目前用(\+)/1替换了所有实例,但我想知道为什么会出现这种情况。是否可以将(\+)/1替换为(not)/1,或者是cprolog或其他prolog编译器(例如cprolog)的约定。

solve(not A, C, Rules, (not Proof, C), T, Ask) :- !,
    T1 is -1 * T,
    solve(A, C1, Rules, Proof, T1, Ask),
    C is -1 * C1.

这是一个使用它的例子。

1 个答案:

答案 0 :(得分:0)

看起来像not这里是一元运算符,例如声明使用op(500,fy,not),因此用作solve/6谓词正在处理的符号数据。如,

?- op(500,fy,not).

Yes
?- write( not 3).
not 3

Yes
?- write_canonical( not 3).
not(3)

Yes
?- not 3 =.. X .

X = [not, 3] 

Yes
?-