z3 C++ API: 获取 expr 的操作

z3 C++ API: get operation of expr

我将 z3 用作 C++ 库。 在我当前的编程项目中,我使用 z3 简化了布尔方程。

为了在我的项目中使用简化方程,我需要左轴、右轴和简化方程的运算。

例如:表达式 (x==3)&&(x<5) 在 z3

中简化为 (x==3)
(= x 3)

lhs 参数 -> x

expression.arg(0)

rhs 参数 -> 3

expression.arg(1)

如何获得操作(=)?

任何具有超过 1 个参数的 expr 都应该有一个操作吗?

我已经看了API 3 小时了,我就是想不通。

希望有人能给我指出正确的方向!

谢谢 脚趾

Z3 中的函数应用程序表示为参数向量和函数声明。例如,假设函数 f 应用于参数 xy。在 C++ API 中,它采用具有 e.num_args() 个参数的 expr 对象 e 的形式,xye.arg(0)e.arg(1)e.decl() 应用于这些参数。

(显然这也适用于 0 个参数,在 API 的各个部分通常称为 const,因为它们是 常量函数的应用 .)

要将 "top" 级别运算符作为字符串获取,即对于原始 "and" 和简化的“=”,您可以使用:

expression.decl().name().str()