我想实现一个需要在Z3Py中使用AND逻辑的约束。假设我们有两个变量a
和b
,我只想添加一个需要a == 0
和b == 1
的约束。在Z3中应该有几种方法可以做到这一点,例如s.add(a == 0, b == 0)
或s.add(And(a==0, b==0)
。但是,我尝试了一种方法s.add(a == 0 and b == 0)
。此方法无效,代码为:
from z3 import *
a = Int('a')
b = Int('b')
s = Solver()
#s.add(a == 0, b ==1)
#s.add(And(a == 0, b == 1))
s.add(a == 0 and b == 1)
print(s.check())
print(s.model())
此文件的输出为a = 0
,这意味着b被忽略了……有人可以解释为什么会这样吗?似乎And(a == 0, b == 1)
和a == 0 and b == 1
在Z3Py中是不同的。