为什么z3的这种传递式闭合会产生不同的结果?

时间:2020-06-22 12:10:27

标签: z3 z3py transitive-closure

我正在运行以下有关z3的传递闭包的程序:

from z3 import *

def main():
    A = DeclareSort('A')
    R = Function('R', A, A, BoolSort())
    TC_R = TransitiveClosure(R)
    # TRC_R = TransitiveReflexiveClosure(R)
    s = Solver()
    a, b, c = Consts('a b c', A)
    s.add(R(a, b))
    s.add(R(b, c))
    s.add(Not(TC_R(a, c)))

    print(s.check())


if __name__ == "__main__":
    main()

我的计算机上上述程序的输出为“ sat”。但是,文档说它应该产生“ unsat”,我同意这个https://theory.stanford.edu/~nikolaj/programmingz3.html#sec-transitive-closure。但是我不知道为什么我的输出不同?这是屏幕截图。

1 个答案:

答案 0 :(得分:0)

这看起来像个错误。请在以下网址进行报告:https://github.com/Z3Prover/z3/issues