如何在Prolog中创建一个使所有关系对称的规则?

时间:2013-02-01 03:37:20

标签: prolog

我想要的是我定义时:

marriedTo(martin, annie).

它也是如下:

marriedTo(annie, martin).

我尝试了以下内容,但它(显然)是一个无限循环。

marriedTo(X,Y) :- marriedTo(Y,X).

我如何在Prolog中执行此操作?

2 个答案:

答案 0 :(得分:9)

解决问题的最简单方法是:

marriedTo(martin, annie).
...
married(X,Y) :- marriedTo(X,Y).
married(X,Y) :- marriedTo(Y,X).

然后还有很多其他方法,实现和语义来解决无限递归的问题......

答案 1 :(得分:1)

毕竟我想出来了:

marriedTo(X,Y) :- marriedTo(Y,Z), X = Z, !.