Бесконечный цикл генерируется, когда логический двигатель активируется, чтобы сделать необходимые выводы.
Правила и факты были определены в соответствии с определенным синтаксисом для мета-интерпретатора, который я использую.
Правило - это пятерка, в которой второе поле является следствием правила, а третье поле - это условия для активации правила.
Цикл вызван обновлением идентификатора (I1) через термин nextID, который я использовал, чтобы убедиться, что каждое утверждение идентификатора увеличивается. Это моя база знаний:
Правила:
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).
Как изменить правило так, чтобы бесконечный цикл не создавался?