我有以下CLP(FD)查询:
?- use_module(library(clpfd)).
?- [I,N,M,J] ins -2147483648..2147483647,
I - 3*N #= X, X in 1..2,
I - 5*M #= Y, Y in 1..4,
I - 15*J #= 0.
在SWI-Prolog中已经在没有标签/ 1的情况下提出查询 目标,翻译几乎挂起。我不期待它 在短时间内终止。
如何修改查询,重新排序等等。所以 它提供了预期的答案" false"?
再见
P.S。:经过一段时间后按^ C和t后,我看到CLP(FD) 系统仍然很忙。
答案 0 :(得分:4)
非常简单:
首先,将I
替换为J*15
;并把大域名放在最后:
?- 15*J - 3*N #= X, X in 1..2,
15*J - 5*M #= Y, Y in 1..4,
I #= 15*J,
[I,N,M,J] ins -2147483648..2147483647.
false.
上述因素并不总是被检测到,因此传播很弱,因为它很容易炸毁域的表示。