我想使用我正在开发的算法自动在Z3Py
中生成方程/不等式。为实现这一目标,我需要使用==
,+
,*
等运算符作为函数。
例如在Sympy
中,我可以添加两个符号,如下所示
import sympy as sp
sp.Add(x, y)
会产生x + y
。
我可以在Z3Py
中执行相同操作吗?
对于计算速度,我认为从表达式转换或表达字符串表示不是一个好主意。
答案 0 :(得分:2)
我找不到任何文档(我假设你也不能)由z3py直接支持,但是python中的所有隐式操作都在operator
模块中具有可调用函数:
import operator
x,y = Ints("x y")
a = operator.add(x,y)
如果要将函数映射到符号,可以使用dict:
ops = {"+":operator.add, "*":operator.mul} #etc.
答案 1 :(得分:1)
怎么样:
import z3
x, y = z3.Ints('x y')
print z3.ExprRef.__eq__(x, y)