由Prolog中的逻辑NOT定义的状态

时间:2014-02-20 05:12:27

标签: prolog

如何在谓词中创建逻辑NOT? 如果我想根据三个条件定义一个状态,它可能看起来像:

test(A, B, C) :- cond(A), cond(B); cond(C).  

您如何将状态定义为非A而不是B而不是C?

1 个答案:

答案 0 :(得分:1)

简单阅读你的病情(注意:在Prolog的限制性条件下会按预期工作 - 失败的否定 - 只有在实例化A,B,C时)

test(A,B,C) :- \+ cond(A), \+ cond(B), \+ cond(C).

相当于(布尔代数应用于否定):

test(A,B,C) :- \+ (cond(A) ; cond(B) ; cond(C)).