繁体   English   中英

SWI Prolog - CLP(R) 未完全传播

[英]SWI Prolog - CLP(R) not propagating fully

这给了我一个结果:

?- {5/(X) = (5/2)}.
X = 2.0 ;

这向我展示了一个约束,但不允许我以任何实质性方式使用X

?- {5/(3-X) = (5/2)}.
{-2.5+5/(3-X)=0.0}.

?- {5/(3-X) = (5/2)}, Z is X.
ERROR: Arguments are not sufficiently instantiated

当然,如果我明确给出解决方案,约束就会消失,它的评估结果为真。

?- {5/(3-X) = (5/2)}, X = 1.
X = 1.

为什么,我怎样才能让它工作?

请参见https://www.swi-prolog.org/man/clpqr.html上的 A10.3 节

但是, clpBNR似乎更好:

?- pack_install(clpBNR).
?- use_module(library(clpBNR)).

?- {5/(3-X) =:= 5/2}, Z = X.
X = Z, Z = 1.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM