Python 正在Z3Py中检索枚举类型的值

Python 正在Z3Py中检索枚举类型的值,python,z3,Python,Z3,如何检索枚举变量v的值?比如说, vTyp, (val1,val2,val3) = EnumSort('vTyp',['val1','val2','val3']) v = Const('my variable',vTyp) 现在,考虑到上面的变量v,我如何检索v的[val1,val2,val3](其中val1,val3,val3是上面的表达式) 我尝试了[v.sort().constructor(0),…(1),…(2)],但构造函数方法不返回表达式 表达式v.sort().construct

如何检索枚举变量
v
的值?比如说,

vTyp, (val1,val2,val3) = EnumSort('vTyp',['val1','val2','val3'])
v = Const('my variable',vTyp)
现在,考虑到上面的变量
v
,我如何检索
v
[val1,val2,val3]
(其中
val1,val3,val3
是上面的表达式)


我尝试了
[v.sort().constructor(0),…(1),…(2)]
,但构造函数方法不返回表达式

表达式
v.sort().constructor(0)
返回Z3函数声明。在Z3中,常量是具有0个参数的函数。要转换常量表达式中的声明,我们应该使用
v.sort().constructor(0)(

顺便说一句,函数
is_func_decl
可用于测试对象是否为Z3函数声明。函数
是_expr
与Z3表达式等效

print is_func_decl(v.sort().constructor(0))
print is_expr(v.sort().constructor(0))
print is_expr(v.sort().constructor(0)())