如何在prolog中停止两次打印相同的值?

时间:2017-11-18 04:18:32

标签: prolog transitive-closure

我在prolog中有这个事实或数据库,看看教育是相同还是少于。例如highschool< = highschool是真的,而highschool< = phd也是如此,但是masters< = highschool是假的。

edu_lessOrEqual(masters, phd).
true;
true;
false.

但输出

true;
false.

当我只想在输出中打印一个true时。

using Coq.FSets.FMapList

1 个答案:

答案 0 :(得分:2)

基本上,这是因为在edu_lessOrEqual/2的第三个句子中,你递归地调用了edu_lessOrEqual/2,所以最后得出一个案例,其中Z和Y都被实例化为phd({{ 1}}实际上等于phd,因此它符合你所阐述的逻辑)。你可以通过在第三个子句的末尾添加一个phd来纠正它,但是这种情况下我会想要使用条件语句来确保我不会遇到无用的选择点。