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.