z3 获取符号变量的大小 C++ API
z3 getting the size of a symbolic variable C++ API
我正在使用 Z3_parse_smtlib2_string
来解析 smtlib2 公式。公式看起来像:
(set-logic QF_AUFBV)(declare-fun SymVar_0 () (_ BitVec 32))(declare-fun SymVar_1 () (_ BitVec 8))...
我使用以下方法解析它:
Z3_ast ast = Z3_parse_smtlib2_string(ctx, (Z3_string)formula, 0, 0, 0, 0, 0, 0);
假设我现在想要获得 SymVar_0
的大小(它应该 return 32)。我该怎么做?
谢谢
调用 Z3_get_bv_sort_size 的函数应该可以完成这项工作。请注意,这是一个 C(而非 C++)函数,因此您还必须提供上下文。
为了其他面临类似问题的用户着想:Z3 中没有符号 table 可让您查找名称的类型。您可以通过 运行 在所有子表达式上自己创建一个,并记录在这样做时遇到的所有符号及其类型。有关 Python 中的示例,请参阅 Z3py: how to get the list of variables from a formula?。
我正在使用 Z3_parse_smtlib2_string
来解析 smtlib2 公式。公式看起来像:
(set-logic QF_AUFBV)(declare-fun SymVar_0 () (_ BitVec 32))(declare-fun SymVar_1 () (_ BitVec 8))...
我使用以下方法解析它:
Z3_ast ast = Z3_parse_smtlib2_string(ctx, (Z3_string)formula, 0, 0, 0, 0, 0, 0);
假设我现在想要获得 SymVar_0
的大小(它应该 return 32)。我该怎么做?
谢谢
调用 Z3_get_bv_sort_size 的函数应该可以完成这项工作。请注意,这是一个 C(而非 C++)函数,因此您还必须提供上下文。
为了其他面临类似问题的用户着想:Z3 中没有符号 table 可让您查找名称的类型。您可以通过 运行 在所有子表达式上自己创建一个,并记录在这样做时遇到的所有符号及其类型。有关 Python 中的示例,请参阅 Z3py: how to get the list of variables from a formula?。