繁体   English   中英

z3py,列出在数据类型中声明的函数

[英]z3py, list functions declared in a datatype

from z3 import *

record = Datatype("record")
record.declare('cons', ('f1', BoolSort()), ('f2', BoolSort()), ('f3', BoolSort()))
record = record.create()

tmp = Const('tmp', record)

data_type = tmp.sort()  # get the sort of the tmp var, which will be "record"
functions = data_type.functions  # returns the list of functions declared in "record" [cons, f1, f2, f3]

如何从排序中获取已声明函数的列表? 请看代码的最后一行。

您正在此处查找constructors字段:https ://z3prover.github.io/api/html/z3py_8py_source.html#l04711

请注意,通过覆盖record的值,您将自己画到了一个角落。 如果您想进行这种级别的编程,最好使名称保持明确。 也就是说,将数据类型称为不同的名称,并在create时将其分配给不同的名称。 通过这种方式,您可以轻松跟踪数据类型和排序。 这是您更清楚地编码的示例:

from z3 import *

record_dt = Datatype("record")
record_dt.declare('cons', ('f1', BoolSort()), ('f2', BoolSort()), ('f3', BoolSort()))
record_sort = record_dt.create()

functions = record_dt.constructors
print functions

这打印:

[('cons', 'is-cons', (('f1', Bool), ('f2', Bool), ('f3', Bool)))]

这为您提供了构造函数的名称 ( cons )、识别器的名称 ( is-cons ) 以及所有字段的名称和种类 ( f1f2f3 ),然后您可以随意使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM