Python Z3Py:获取每个操作符对应的函数,例如&x27*''==''-';
我想使用我正在开发的算法自动生成Python Z3Py:获取每个操作符对应的函数,例如&x27*''==''-';,python,z3,sympy,z3py,Python,Z3,Sympy,Z3py,我想使用我正在开发的算法自动生成Z3Py中的方程/不等式。为了实现这一点,我需要使用诸如==,+,*等操作符作为函数 例如,在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
中的方程/不等式。为了实现这一点,我需要使用诸如==
,+
,*
等操作符作为函数
例如,在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中的所有隐式操作在
操作符
模块中都有可调用的函数:
import operator
x,y = Ints("x y")
a = operator.add(x,y)
如果要将函数映射到其符号,可以使用dict:
ops = {"+":operator.add, "*":operator.mul} #etc.
也许可以看看。当我过去玩z3py的时候,只要看看里面有什么对我很有帮助。它没有被很好地记录下来,但是实际的Python包装源相对Z3本身来说是比较小的,它是用C++编写的。3@TadhgMcDonald-詹森
3