Ошибка рекурсии при использовании пакета aima
Я пытался создать систему FOL, чтобы доказать, что «в доме, принадлежащем Джилл, есть плесень. Значит, у Джилл проблемы с дыханием». Я получаю максимальную ошибку рекурсии для этого кода.
# Import libraries
import aima.utils
import aima.logic
# The main entry point for this module
def main():
# Create an array to hold clauses
"""all houses have a issues structureal damages is dangerous to live
A Houses(x) ^ structure_issue(y) ^ owner(z) ===> breathing_problem(x)"""
# if the
clauses = []
# Add first-order logic clauses (rules and fact)
clauses.append(aima.utils.expr("(House(x) & issue(y) & Owns(z,x) & structure_issue(x,y,z) ) ==> breathing_problem(z)"))
clauses.append(aima.utils.expr("breathing_problem(Jill)"))
clauses.append(aima.utils.expr("Owns(Jill, H1)"))
clauses.append(aima.utils.expr("Building(H1)"))
clauses.append(aima.utils.expr("Building(H1) & Owns(Jill, H1) ==> structure_issue(H1,y,Jill)"))
clauses.append(aima.utils.expr("issue_1(mould)"))
clauses.append(aima.utils.expr("issue_1(x) ==>issue(x)"))
# Create a first-order logic knowledge base (KB) with clauses
KB = aima.logic.FolKB(clauses)
print(clauses)
# Add rules and facts with tell
KB.tell(aima.utils.expr('structure_issue(H1,Floor,Jill)'))
KB.tell(aima.utils.expr('structure_issue(H1,plumbing, Jill)'))
KB.tell(aima.utils.expr("structure_issue(H1,x,Jill) ==> breathing_problem(x)"))
print(KB)
# Get information from the knowledge base with ask
breathing_problem = KB.ask(aima.utils.expr('breathing_problem(x)'))
# Print answers
print('breathing_problem?')
print(breathing_problem)
# Tell python to run main method
if __name__ == "__main__": main()