Z3验证程序(Python绑定)可以';当证明为真时,不能确定否定的方式

Z3验证程序(Python绑定)可以';当证明为真时,不能确定否定的方式,python,z3,proof,z3py,Python,Z3,Proof,Z3py,我试图理解为什么Z3解算器在试图满足以下不一致的表达式集时返回“未知” In [1]: from z3 import * In [2]: set_param(proof=True) In [3]: s = Solver() In [4]: p,q = Bools("p q") In [5]: s.add(p) In [6]: s.add(Not(q)) In [7]: s.add(Implies(p,q)) In [8]: s.check() Out[8]: unknown 请注

我试图理解为什么Z3解算器在试图满足以下不一致的表达式集时返回“未知”

In [1]: from z3 import *

In [2]: set_param(proof=True)

In [3]: s = Solver()

In [4]: p,q = Bools("p q")

In [5]: s.add(p)

In [6]: s.add(Not(q))

In [7]: s.add(Implies(p,q))

In [8]: s.check()
Out[8]: unknown
请注意,如果不将证明参数设置为True,则不会得到“未知”

In [1]: from z3 import *

In [2]: s = Solver()

In [3]: p,q = Bools("p q")

In [4]: s.add(p)

In [5]: s.add(Not(q))

In [6]: s.add(Implies(p,q))

In [7]: s.check()
Out[7]: unsat
此外,当我们使用不同的不一致表达式集时,即使设置proof=True,也不会得到“unknown”:

In [1]: from z3 import *

In [2]: set_param(proof=True)

In [3]: s = Solver()

In [4]: x = Int('x')

In [5]: s.add(x==0)

In [6]: s.add(x>0)

In [7]: s.check()
Out[7]: unsat
当证明参数设置为True时,在句子逻辑中设置这组不一致的表达式有什么问题