我想知道是否可以强制结果,例如
test(0, 0, 0).
在Prolog中是假的。
答案 0 :(得分:3)
是的,您可以使用一个小帮助谓词来执行此操作:
:- use_module(library(clpfd)).
test_(X,Y,Z) :- % base relation
Z #= X+Y. % here: integer sum
test(X,Y,Z) :- % exclude (0,0,0) as a solution
abs(X) + abs(X-Y) + abs(Y-Z) #\= 0,
test_(X,Y,Z).
示例查询:
?- test(1,1,2).
true
?- test(1,-1,0).
true
请注意如何排除不需要的解决方案:
?- test_(0,0,0). % 0+0 = 0 true ?- test(0,0,0). false