是否可以使用smt-lib或类似的API进行C / C ++来解析用户理论插件的输入?例如,在示例用户理论“test_user_theory.c”中,如何在输入文件中声明字符串变量和常量字符串(不将其分解为位向量)?提前致谢。
答案 0 :(得分:3)
函数z3_parse_smtlib_string
,z3_parse_smtlib_file
,z3_parse_smtlib2_string
,z3_parse_smtlib2_file
允许用户使用给定的排序和声明绑定任意符号。
因此,您可以使用理论插件中定义的声明连接有限数量的符号。这不是一个完美的解决方案,因为一些理论定义了任意数量的函数/常数声明和排序。例如,算术理论定义了符号:0
,1
,2
等。数组理论定义了一个"无限"各种各样的。
请注意,理论插件API现已过时。 Z3源代码现在可用,Z3定理证明器的扩展可以直接在实际代码库中实现。 Z3源代码可在http://z3.codeplex.com获得。我计划在将来的版本中删除理论插件API。