z3库

写在前面的话

z3是由Microsoft Research开发的高性能定理证明器,例如:软件/硬件验证和测试,约束解决,混合系统分析,安全性,生物学(计算机模拟分析)和几何问题.
主要是一些逆向,加密方面比较有用吧,对于位运算等等非常方便.

安装

支持Python2以及3各个版本,Linux下直接安装即可…

pip install z3-solver
pipenv install z3-solver

使用

Solver()创建一个通用求解器.约束可以使用add方法添加.check()解决了断言的约束.
simplify可对z3表达式应用简单的转换
hrlp_simply() 打印所有可用选项
BitVec(‘x’, 16) 创建一个位向量变量,名称为x,具有16位.

快速入门

解不等式

x = Int('x')
y = Int('y')
solve(x > 2, y < 10, x + 2*y == 7)

函数Int('x')创建一个名为x的整数变量。函数solve解决一个约束系统。上面的例子用到了两个变量x和y,以及三个约束条件。
Simplify
z3公式/表达式简化器

表达式分析

from z3 import *

a, b, c = Ints('a b c')
q, w, e = Reals('q w e')
set_option(precision=30)
solve(q**2 + w**2 == 3, q**3 == 2)
x, y, z = BitVecs('x y z', 8)
s = Solver()
s.add(x ^ y & z == 12)
s.add(y & x >> 3 == 3)
s.add(z ^ y == 4)
print(s.check())
result = s.model()
print(result)

输出
在这里插入图片描述
reference:https://arabelatso.github.io/2018/06/14/Z3%20API%20in%20Python/

发布了147 篇原创文章 · 获赞 4 · 访问量 6830

猜你喜欢

转载自blog.csdn.net/weixin_43833642/article/details/103748537
Z3
今日推荐