工具篇·z3约束求解器
z3库
下载z3库
pip3 install z3-solver
基本变量类型
整型(Int),实型(Real)和向量(BitVec)
整型
- Int(name, ctx=None),创建一个整数变量,name是名字
- Ints (names, ctx=None),创建多个整数变量,names是空格分隔名字
实数
real(name, ctx=None),创建一个实变量,name是名字
reals (names, ctx=None),创建多个实变量,names是空格分隔名字
realVal (val, ctx=None),创建一个实常量,有初始值,没名字。
向量
BitVec(变量名,变量的大小(单位bit))
BitVec(name,bv,ctx=None),创建一个位向量,name是他的名字,bv表示大小BitVecs(name,bv,ctx=None),创建一个有多变量的位向量,name是名字,bv表示大小BitVecVal(val,bv,ctx=None),创建一个位向量,有初始值,没名字。
常用API
- 创建约束求解器
s = Solver() - 列方程
s.add(...) - 判断解是否存在 (存在就打印返回sat)
s.check() - 求解
print(s.model()[向量名])
用起来还是挺简单的,只不过这里必须要加check()检测不然会报错,如图:
# 导入Z3约束求解库 |
例
import z3 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zechariahの博客!
