试图理解Prolog错误:存在错误

试图理解Prolog错误:存在错误,prolog,logic,Prolog,Logic,我试图通过几个Prolog查询来了解发生了什么。我有以下规则: similar(a,aa). similar(aa,aaa). similar(X,X). similar(X,Y) :- similar(Y,X). similar(X,Y) :- similar(X,Z), similar(Z,Y). 然后,我将尝试执行一个基本查询: ?- similar(a,aaa). 这将导致以下错误: uncaught exception: error(existence_erro

我试图通过几个Prolog查询来了解发生了什么。我有以下规则:

 similar(a,aa).   
 similar(aa,aaa).
 similar(X,X).
 similar(X,Y) :- similar(Y,X).
 similar(X,Y) :- similar(X,Z), similar(Z,Y).
然后,我将尝试执行一个基本查询:

 ?- similar(a,aaa).
这将导致以下错误:

 uncaught exception: error(existence_error(procedure,similar/0),similar/0)
在我看来,它将返回
True
,因为它将看到
相似(a,aa)
相似(aa,aaa)
,从而满足第二个horn子句


我做错了什么?

你的问题永远不会结束。。。当您执行<代码>相似(x,y):-类似(y,x).<代码> >您创建了一个循环来消除INF递归吗?您需要在列表中保存在每次迭代中分析的元素,然后,在每次迭代中,检查当前迭代中所考虑的元素是否在该列表中。