对整数除法的约束

Constraint over the integer division

我在 prolog (Eclipse CLP) 中有以下语句:

?-X::1..100,  X/5 #= 2, X = 12.

结果为No.。我想检查 X5 上的整数除法是否等于 2。如果我写下面的语句:

?-X::1..100,  X//5 #= 2, X = 12.

我会得到以下错误:

instantiation fault in //(X{1 .. 100}, 5, _703)

所以,问题是如何检查变量 X 的整数除法?

我假设您使用的是 library(ic),它目前不直接支持 flooring 或 truncating divisions。您可以通过引入 "remainder" 变量并使用乘法来重新表述您的条件:

?- X::1..100, Rem::0..4, X #= 5*2 + Rem, X = 13.
X = 13
Rem = 3
Yes (0.00s cpu)