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
posted @ 2022-12-28 20:37  记忆浮夸  阅读(128)  评论(0)    收藏  举报