z3-solver安装和使用方法


Z3是一个微软研究院开源的theorem prover(定理证明器),支持位向量、布尔、数组、浮点数、字符串以及其他数据类型。Z3是一个SMT solver以及支持 SMTLIB的格式。
 
这里简单介绍几个概念:
SAT(Boolean Satisfiability Problem/布尔可满足性问题)
SMT(Satisfiability Modulo Theories/可满足性模理论)
SAT + Theory Solvers = SMT
 
angr框架的内置Z3:  https://github.com/angr/angr-z3
-------
 
0x01 安装z3-solver
pip install z3-solver
以下是错误安装方式:
# 别安装成这个
# Backup ZFS snapshots to S3
pip install z3

 

0x02 使用z3-solver来解方程
例如最简单的三元一次方程组:
from z3 import *
x,y,z=Ints('x y z')
s=Solver()
s.add(2*x+3*y+z==6)
s.add(x-y+2*z==-1)
s.add(x+2*y-z==5)
print s.check()
print s.model()

模运算:

from z3 import *
x=Int('x')
s=Solver()
a = 65537
b = 64834
c = 41958
s.add(x>0)
s.add(x % a == b)
s.add(x % b == c)
print s.check()
print s.model()

 

0x03 其他用法
等pcat以后再补充
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM