pythonz3,初步使用
基本变量类型
其分为整型(Int),实型(Real)和向量(BitVec)
整形(int)
不是c中具有上下限的整形而是数学意义上的整数
创建方式
- Int(name, ctx=None),创建一个整数变量,name是名字
- Ints (names, ctx=None),创建多个整数变量,names是空格分隔名字
- IntVal (val, ctx=None),创建一个整数常量,有初始值,没名字。
实形(real)
是数学意义上的实数
创建方式
- real(name, ctx=None),创建一个实变量,name是名字
- reals (names, ctx=None),创建多个实变量,names是空格分隔名字
- realVal (val, ctx=None),创建一个实常量,有初始值,没名字。
向量(BitVec)
数学意义上的向量
创建方式
Bitvec(name,bv,ctx=None),创建一个位向量,name是他的名字,bv表示大小
BitVecs(name,bv,ctx=None),创建一个有多变量的位向量,name是名字,bv表示大小
BitVecVal(val,bv,ctx=None),创建一个位向量,有初始值,没名字。
python3.11下的使用
import z3
x=z3.Real('x')
y=z3.Real('y')
z3.solve(x>2,y<10,x+2*y==7)
""""""
[y = 0, x = 7]
""""""
在python3.11下使用时需使用"."访问符访问z3
类似使用z3这个类中的函数以及数据类型
具体指令
- s=solver(),创建一个解的对象。
- s.add(条件),为解增加一个限制条件
- s.check(),检查解是否存在,如果存在,会返回"sat"
- modul(),输出解得结果
5.solver.assertions()
查看求解器已经添加的约束和约束的个数
在计算时需给变量约束,没有约束是计算不出结果的,同时给了约束才能进行计算。