我正在运行以下有关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。但是我不知道为什么我的输出不同?这是屏幕截图。