如何在谓词中创建逻辑NOT? 如果我想根据三个条件定义一个状态,它可能看起来像:
test(A, B, C) :- cond(A), cond(B); cond(C).
您如何将状态定义为非A而不是B而不是C?
答案 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)).