Z3(1)
z3
Solver()
创建一个求解器,在里面添加约束条件进行下一步的求解
solver = Solver
add()
通常在solver()命令之后,用来添加约束条件,通常添加的约束条件是一个等式
solver.add()
check()
判断是否添加的约束条件是否有解,有解返回sat,无解返回unsat
if solver.check()==sat
model()
在有解的情况下,求解的交集再输出
print solver.model()
append()追加元素
数据类型
int 整型
bool 布尔型
Array 数组型
BitVec (‘a’,8)char型 其中BitVec可以是特定大小的数据类型,不一定是8,例如C语言中的int型可以用BitVec('a',32)表示
初始化
flag = []
for i in range(5):
flag.append(BitVec('%d' % i, 8/32)) #char型/int型
print(flag)
结果【0,1,2,3,4】
完整的代码例子
from z3 import *
x = Real('x')
y = Real('y') #设未知数
s = Solver() #创建约束求解器
s.add(30*x+15*y==675)
s.add(12*x+5*y==265) #添加约束条件
if s.check() == sat: #检测是否有解
result = s.model()
print result #若有解则得出解,注意这里的解是等式
else:
print 'no result' #无解则打印no result

浙公网安备 33010602011771号