我们需要一个字符串求解器并且正在考虑Z3-str或其后继者Z3str2。这些扩展是否可以同时与Z3的所有其余部分一起使用(即在Z3中实现的所有其他理论解算器)?或者这些字符串扩展是否仅可用于准独立?
答案 0 :(得分:0)
我不这么认为,不。尝试使用Z3-str声明一个真实的错误。似乎只支持字符串和整数。
在使用Z3-str之前还有其他事项需要考虑。它似乎需要略微不同的非SMT-LIB v2兼容输入格式。 Z3-str/tests/
中提供了示例文件。他们使用declare-variable
来声明变量,而不是declare-const
或declare-fun
。
项目中还存在一些关于Z3-str和Z3-str2之间差异的模糊性。具体来说,如果您转到GitHub page,则构建说明中会引用Z3-str2.py
,但回购中没有此类文件,只有Z3-str.py
。我认为GitHub页面上的内容仍然是最新版本,因为2016年2月有提交。
最后,Z3-str apparently uses a deprecated API,所以你必须使用旧版本的Z3。因此,您可能不希望围绕Z3-str构建新项目,除非您可以使用Z3 4.1.1(2012年10月)。
答案 1 :(得分:0)
你很幸运:Z3目前原生支持字符串。 当然,字符串可以与所有其他理论相结合。