我在Z3 python中有这段代码:
x = Bool('x')
y = Bool('y')
z = Bool('z')
z == (x xor y)
s = Solver()
s.add(z == True)
print s.check()
但是这段代码在运行时会报告以下错误:
c.py(4): error: invalid syntax
如果我将xor
替换为and
,则没有问题。那么这意味着不支持XOR?
答案 0 :(得分:3)
您应该使用Xor(a, b)
。此外,要创建表示公式a and b
的Z3表达式,我们必须使用And(a, b)
。在Python中,我们不能重载运算符and
和or
。
以下是Xor
(available online at rise4fun)的示例。
x = Bool('x')
y = Bool('y')
z = Xor(x, y)
s = Solver()
s.add(z)
print s.check()
print s.model()