我正在对约束逻辑编程进行一些修改,并希望知道如何阅读以下查询以正确地预测它们的结果。
基本上有一个问题,询问以下查询提供的答案是否正确。
所以这就是问题
Consider the following queries and answers. Some answers coincide
with what SWI-Prolog would infer whereas others are erroneous.
Indicate which answers are genuine and which ones are fake (no
explanation is required).
(i) ?- [X, Y, Z] ins 0 .. 4, X #= Y + 1.
X in 1..4, Y in 0..3, Z in 0..4.
(ii) ?- [X, Y, Z] ins 0 .. 4, X #= Y + Z.
X in 0..4, Y in 0..2, Z in 0..2.
(iii) ?- [X, Y, Z] ins 0 .. 4, X #= Z - Y.
X in 0..4, Y in 0..4, Z in 0..4.
(iv) ?- [X, Y, Z] ins 0 .. 4, X #= Y * Y, Z #= -Y.
Y = 0, Z = 0.
我的问题是,为了确定答案是否正确,阅读查询的最佳方法是什么。
答案 0 :(得分:4)
几个步骤:
在您的情况下,显示的答案 是一个语法上有效的连词,因此它绝对是正确解决方案的候选者。但是,答案承认原始查询没有的解决方案(练习:哪个?),因此答案不正确。