Z3 声明另一代数数据类型的代数数据类型?

Z3 声明另一代数数据类型的代数数据类型?,z3,z3py,Z3,Z3py,我想知道是否有可能创建一个代数数据类型,它依赖于Z3Py中的另一个代数数据类型 例如,假设我定义了自己的Bool数据类型,我想自己定义一个Bool列表: from z3 import * Bool = Datatype('Bool') Bool.declare('TRUE') Bool.declare('FALSE') Bool = Bool.create() TRUE = Bool.TRUE FALSE = Bool.FALSE 这很好,那么: BoolList = Datatype('Bo

我想知道是否有可能创建一个代数数据类型,它依赖于Z3Py中的另一个代数数据类型

例如,假设我定义了自己的Bool数据类型,我想自己定义一个Bool列表:

from z3 import *
Bool = Datatype('Bool')
Bool.declare('TRUE')
Bool.declare('FALSE')
Bool = Bool.create()
TRUE = Bool.TRUE
FALSE = Bool.FALSE
这很好,那么:

BoolList = Datatype('BoolList')
BoolList.declare('bNIL')
BoolList.declare('bCONS', ('hd', Bool()), ('tail', BoolList))
BoolList = BoolList.create()
此操作失败,并显示以下消息:

>>> BoolList.declare('bCONS', ('hd', Bool()), ('tail', BoolList))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: DatatypeSortRef instance has no __call__ method
依赖于另一代数数据类型的代数数据类型的定义是不可能的还是我需要通过s.th。除了Bool()

提前谢谢!
Carsten

事实证明,我在不应该使用的地方使用了括号-对自定义数据类型“Bool”的引用不需要调用:

BoolList.declare('bCONS', ('hd', Bool), ('tail', BoolList))
很好:)

BoolList.declare('bCONS', ('hd', Bool), ('tail', BoolList))