当推理电机被激活以进行必要的推理时,将生成一个无限循环。
规则和事实是根据我正在使用的元解释器的特定语法定义的。
该规则是一个五元组,其中第二个字段是规则的结果,而第三个字段是激活规则的条件。
该循环是由通过术语nextID更新id(I1)引起的,我用它来确保每次断言id都会增加这是我的知识库:
规则:
rule(1,[gn(Name,Surname,I1),retract(nextID(I)),nextID(I1)],
and([person(Name,Surname),nextID(I),call_p(I1 is I+1),Name=='john']),1,1).
事实:
fact(1,nextID(0),1).
fact(2,person(john,black),1).
我应该如何以不创建无限循环的方式修改规则?