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

时间:2016-07-12 07:59:46

标签: c++ z3

我正在使用z3作为C ++库。 在我目前的编程项目中,我有布尔方程式,我正在简化使用z3。

为了在我的项目中使用简化方程,我需要lhs,rhs和简化方程的运算。

e.G。:表达式(x == 3)&amp;&amp;(x <5)在z3中被简化为(x == 3)

(= x 3)

lhs参数 - &gt; x

expression.arg(0)

rhs参数 - &gt; 3

expression.arg(1)

如何获得操作(=)?

任何带有多个参数的expr都应该有一个操作权吗?

我现在正在寻找3小时的API,我无法理解它。

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

由于 Toebs

2 个答案:

答案 0 :(得分:2)

获得&#34; top&#34; level运算符作为字符串,即原始&#34;和&#34;,以及简化的&#34; =&#34;你可以使用:

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

答案 1 :(得分:1)

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

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