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

为给定日期之前的消息编写Prolog规则,prolog,Prolog,我如何编写一个Prolog规则,让两个人在给定的日期之前,测试他们之间是否向任何一个方向发送了消息 到目前为止,我已经: ?- MBefore(x,y) :- message(x,y,d1), message(y,x,d1), d1@<Date. ?-MBefore(x,y):-message(x,y,d1),message(y,x,d1),d1@MBefore(x,y,D):-message(x,y,d1),D>d1;消息(Y、X、D1),D>D1。 在这里,“意味着”和“,”;”表示

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

到目前为止,我已经:

?- MBefore(x,y) :- message(x,y,d1), message(y,x,d1), d1@<Date.
?-MBefore(x,y):-message(x,y,d1),message(y,x,d1),d1@
MBefore(x,y,D):-message(x,y,d1),D>d1;消息(Y、X、D1),D>D1。

在这里,“
意味着”和“,
”;”表示“或”。“或”组合的两个备选方案都是独立尝试的。首先,系统尝试证明第一个备选方案(在
的左侧),然后搜索回溯,将所有逻辑变量恢复到其以前的状态,然后尝试第二个备选方案(在“;”的右侧)。这就是为什么我们可以在“或”-组合的两个备选方案中使用相同的logvar
D1

另外,
:-“
表示“如果可以证明以下情况,则保持”


如果以上任何一项对你来说都是新的,你真的应该通过一些教程或教科书来学习语言的基础知识。《Prolog的艺术》是一本优秀的入门书。

Prolog中的变量必须以大写字母开头。谓词应该以小写字母开头。在尝试此操作之前,您应该先阅读一个介绍性的Prolog教程。那么,我该如何处理此规则?日期是什么样子的?谢谢,这对我很有帮助!是的,Prolog对我来说是新的,所以我会考虑这本书!呃,你所说的“mbefore”是什么意思?与OP所说的
mbefore
意思相同另一个可能的答案是:我的意思是
消息(X,Y,D1),D>D1;消息(Y,X,D1),D>D1
。好的,谢谢。是D,给定日期,或是D1。如果不是,它们都是什么意思?OP要求一个谓词,表示“在日期D之前,X和Y之间有一条消息”。如果在日期D1有一条从X到Y的传出消息,且D1