pyDatalog错误-重新排序加载功能中的事实会使程序挂起

时间:2018-12-20 10:03:29

标签: python-3.x datalog pydatalog

考虑以下代码:

from pyDatalog import pyDatalog 
from pyDatalog.pyDatalog import assert_fact, load, ask, clear

assert_fact('A', 'f', 'b')
assert_fact('B', 'a', 'f')

load("""
C(A,B) <= B(A,F) & A(F,B)
C(A,B) <= D(B,A) & E(B,A)
D(A,B) <= E(E,B) & A(E,A)
D(A,B) <= E(A,B) & C(B,A)
E(A,B) <= A(F,A) & B(B,F)
E(A,B) <= A(A,F) & D(F,B)
E(A,B) <= E(E,B) & A(E,A)
""")

print(ask('C(a,b)'))

程序挂在ask命令上,但是如果我们切换前两个子句的顺序,它将起作用,即代替:

C(A,B) <= B(A,F) & A(F,B)
C(A,B) <= D(B,A) & E(B,A)

使用:

C(A,B) <= D(B,A) & E(B,A)    
C(A,B) <= B(A,F) & A(F,B)

您怎么看?这是一个错误吗?

0 个答案:

没有答案