我正在使用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
答案 0 :(得分:2)
获得&#34; top&#34; level运算符作为字符串,即原始&#34;和&#34;,以及简化的&#34; =&#34;你可以使用:
expression.decl().name().str()
答案 1 :(得分:1)
Z3中的函数应用程序表示为参数向量和函数声明。例如,假设函数f
应用于参数x
和y
。在C ++ API中,它采用具有expr
个参数的e
对象e.num_args()
的形状,x
,y
为e.arg(0)
,{{ 1}}和e.arg(1)
适用于这些参数。
(显然这也适用于0个参数,在API的各个部分通常称为e.decl()
,因为它们是常量函数的应用程序。)