序号过程“?-A”不存在

时间:2019-07-08 17:26:16

标签: prolog

我正在尝试熟悉Prolog并运行一个非常非常简单的程序。

father(tom, john).  
father(jerry, john).

sibling(A, B) :-father(A, F), father(B, F).

当我运行?- sibling(tom,jerry)时 我期望为True,但是正在接收过程“?-A”不存在。 有语法错误吗?还是以其他方式运行查询?

1 个答案:

答案 0 :(得分:1)

因为您没有任何知识!您在father谓词中使用大写字母。如您所知,变量使用大写字母。因此,您需要编写如下内容:

father(w, c).
father(g, c).
sibling(A, B) :-father(A, F), father(B, F).

此外,请注意,根据您的定义,w也是sibling(本身)的w!另外,如果您想以语义方式实现它,则可以像下面这样重写它:

father(w, c).
father(g, c).
sibling(A, B) :- A \== B, father(A, F), father(B, F).