在给定日期之前为消息编写Prolog规则

时间:2013-12-24 16:25:26

标签: prolog

如何编写给两个人的Prolog规则,测试在给定日期之前是否在它们之间的任何一个方向发送了消息?

到目前为止,我有:

?- MBefore(x,y) :- message(x,y,d1), message(y,x,d1), d1@<Date.

1 个答案:

答案 0 :(得分:1)

mbefore(X,Y,D) :- message(X,Y,D1), D > D1 ; message(Y,X,D1), D > D1.

此处','表示“和”';'表示“或”“或”组合的两种选择都是独立尝试的。首先,系统尝试证明第一个替代方案(在;的左侧),然后搜索回溯,任何逻辑变量都恢复到之前的状态,第二个替代(在';'的右侧)是试过。这就是为什么我们可以在“或” -combination的两种替代方案中使用相同的logvar D1

此外,':-'表示“成立,如果以下内容可以证明”

如果上述任何一项对您来说都是新的,那么您应该通过一些教程或教科书来学习该语言的基础知识。 “Prolog的艺术”是一本优秀的入门书。