我刚刚下载了seq和regexp排序的基准(使用z3-4.3.2)。运行“membership_1.smt2”后,当我得知结果时会出现什么问题?
我没有指定任何进一步的命令行选项。根据基准测试,它应该会产生sat,但是没有任何模型就会打印出未知数据。
谢谢
修改
我进一步注意到,“重新开始”无法识别。这与z3的版本有关,还是你忘了命令行选项?
答案 0 :(得分:0)
首先,我不知道OP或评论者在哪里找到" membership_1.smt2"示例输入。我检查了SMT-LIB benchmarks,以及Z3,S3和Z3-str的来源,但无法找到它。
无论如何,问题在于OP正在测试为S3或Z3-str编写的基准测试,并针对未修改版本的Z3运行它。 S3和Z3-str需要修改版本的Z3才能处理这些扩展。这在S3网站上有描述[S3:用于网络安全分析的符号字符串解算器,http://www.comp.nus.edu.sg/~trinhmt/S3/,2016年8月4日访问]:
Z3解算器的修改版
- 修改后的Z3的源代码可用here。
- 我们修改Z3以使弦理论与算术理论相互作用。
- 所示
这些新添加的API方法允许我们查询字符串变量的长度,以及不同长度之间的关系 字符串变量,如our CCS'14 paper。
我们的修改版Z3也被Z3-str GROUP用于integer/string theory integration。
点击(unmodified) Z3 source显示没有匹配"重新开始"或者"重新结束"。点击修改后的版本会显示这些参数在z3-source-060115.zip
的lib/seq_decl_plugin.cpp
中定义。