Z3Py:获取每个运算符对应的函数,例如'*', '==', '-'
Z3Py: getting the function corresponding to each operator e.g. '*', '==', '-'
我想使用我正在开发的算法在 Z3Py
中自动生成 equations/inequalities。为此,我需要使用 ==
、+
、*
等运算符作为函数。
例如在Sympy
中,我可以添加两个符号如下
import sympy as sp
sp.Add(x, y)
结果是 x + y
.
我可以在 Z3Py
中做同样的事情吗?
为了计算速度,我认为将表达式的字符串表示形式进行转换并不是一个好主意。
怎么样:
import z3
x, y = z3.Ints('x y')
print z3.ExprRef.__eq__(x, y)
我找不到 z3py 直接支持的任何文档(我假设你也找不到),但是 python 中的所有隐式操作在 operator
模块中都有可调用函数:
import operator
x,y = Ints("x y")
a = operator.add(x,y)
如果你想将函数映射到它们的符号,你可以使用字典:
ops = {"+":operator.add, "*":operator.mul} #etc.
我想使用我正在开发的算法在 Z3Py
中自动生成 equations/inequalities。为此,我需要使用 ==
、+
、*
等运算符作为函数。
例如在Sympy
中,我可以添加两个符号如下
import sympy as sp
sp.Add(x, y)
结果是 x + y
.
我可以在 Z3Py
中做同样的事情吗?
为了计算速度,我认为将表达式的字符串表示形式进行转换并不是一个好主意。
怎么样:
import z3
x, y = z3.Ints('x y')
print z3.ExprRef.__eq__(x, y)
我找不到 z3py 直接支持的任何文档(我假设你也找不到),但是 python 中的所有隐式操作在 operator
模块中都有可调用函数:
import operator
x,y = Ints("x y")
a = operator.add(x,y)
如果你想将函数映射到它们的符号,你可以使用字典:
ops = {"+":operator.add, "*":operator.mul} #etc.