生成的Prolog文件中谓词的Prolog存在\u错误

生成的Prolog文件中谓词的Prolog存在\u错误,prolog,Prolog,我写的程序有问题。该程序接受一个输入并基于它生成一个prolog程序。它会产生如下结果: test(A):-condA(A),condB(A). condA(val). condB(val). 我的问题是,有时程序中没有condB(val)或condB,除了上面的test定义之外。在这种情况下,当我尝试询问test(val)时,我得到了condB的存在错误。有没有一种方法可以向prolog程序中添加一些东西,将condB的所有参数值都定义为false 如果这是一个愚蠢的问题,我很抱歉,因为我不

我写的程序有问题。该程序接受一个输入并基于它生成一个prolog程序。它会产生如下结果:

test(A):-condA(A),condB(A).
condA(val).
condB(val).
我的问题是,有时程序中没有condB(val)或condB,除了上面的test定义之外。在这种情况下,当我尝试询问test(val)时,我得到了condB的存在错误。有没有一种方法可以向prolog程序中添加一些东西,将condB的所有参数值都定义为false


如果这是一个愚蠢的问题,我很抱歉,因为我不熟悉prolog。

您的问题的答案很简单

condB(_):-fail.

符号“\u1”是自由变量

您可以告诉prolog处理器,
condB/1
是动态的:

:-dynamic condB/1.

如果在此定义之前生成具有特定值的其他定义,则此代码行之前的所有参数的条件都会成功。