pythonz3,初步使用

基本变量类型

其分为整型(Int),实型(Real)和向量(BitVec)

整形(int)

不是c中具有上下限的整形而是数学意义上的整数

创建方式

  1. Int(name, ctx=None),创建一个整数变量,name是名字
  2. Ints (names, ctx=None),创建多个整数变量,names是空格分隔名字
  3. IntVal (val, ctx=None),创建一个整数常量,有初始值,没名字。

实形(real)

是数学意义上的实数

创建方式

  1. real(name, ctx=None),创建一个实变量,name是名字
  2. reals (names, ctx=None),创建多个实变量,names是空格分隔名字
  3. 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这个类中的函数以及数据类型

具体指令

  1. s=solver(),创建一个解的对象。
  2. s.add(条件),为解增加一个限制条件
  3. s.check(),检查解是否存在,如果存在,会返回"sat"
  4. modul(),输出解得结果

5.solver.assertions()查看求解器已经添加的约束和约束的个数

在计算时需给变量约束,没有约束是计算不出结果的,同时给了约束才能进行计算。

posted @ 2022-12-27 15:20  润梧  阅读(517)  评论(0编辑  收藏  举报