【发布时间】:2017-11-16 12:02:46
【问题描述】:
我必须在 Prolog 中为一项任务创建家庭关系,我偶然发现了这个问题。
man(john).
woman(lisa).
married(john,lisa).
?- married(john,X).
X = lisa.
?- married(X,john).
false.
如何使这个谓词以两种方式工作? 如果 john 与 lisa 结婚,则 lisa 与 john 结婚。
对于事实,我只能使用性别、父母和已婚:
man(john).
woman(lisa).
parent(john,steve).
parent(lisa,steve).
married(john,lisa).
这个要求让我无法使用这个solution。我不能只添加关系wife(lisa,john).,因为我必须自己定义妻子、丈夫等。
wife(X,Y) :- woman(X),married(X,Y).
【问题讨论】:
-
我不明白您为什么说链接的答案无法使用。虽然它不会在不做任何工作的情况下为您提供问题的完整答案,但此处使用了所需的原则。
标签: prolog predicate bidirectional