Z3Py:获取对应于每个运算符的函数,例如: '*','==',' - '

时间:2016-04-04 19:38:04

标签: python z3 sympy z3py

我想使用我正在开发的算法自动在Z3Py中生成方程/不等式。为实现这一目标,我需要使用==+*等运算符作为函数。

例如在Sympy中,我可以添加两个符号,如下所示

import sympy as sp
sp.Add(x, y)

会产生x + y

我可以在Z3Py中执行相同操作吗?

对于计算速度,我认为从表达式转换或表达字符串表示不是一个好主意。

2 个答案:

答案 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)