Prolog:姐妹/兄弟关系

时间:2012-05-15 08:25:17

标签: prolog relationship

我正试图在Prolog中建立一个关系模型,但姐妹关系结果证明是失败的。我想知道什么是一个很好的解决方案。我是初学者,这是我的第一个项目,欢迎任何帮助。

man(adam).
man(peter).
man(paul).
man(carlos).
man(willem).

woman(marry).
woman(eve).
woman(greta).
woman(lisa).

parent(adam, peter). 
parent(eve, peter).
parent(adam, paul).
parent(marry, paul).
parent(adam, willem).
parent(adam, lisa).
parent(eve, willem).
parent(eve, lisa).
parent(greta, adam).
parent(carlos, adam).

father(F, C) :-
   man(F),
   parent(F, C).

mother(M,C) :-
   woman(M),
   parent(M, C).

grandparent(P, C):-
   parent(P, K),
   parent(K, C).

sister(x,y) :-
   woman(x),
   mother(m, x),
   father(f, x),
   mother(m, y),
   father(f, y).

1 个答案:

答案 0 :(得分:1)

您需要在sister\2谓词中使用大写字母作为变量。在你的代码中你有小写字母,它们是原子,所以除非你有人叫xyfm,否则这将永远失败。

另外,添加X \= Y以防止X成为她自己的妹妹。