string - Z3 字符串 : finding the API

标签 string z3

[1] 我已从此 GitHub 存储库下载并安装了 Z3 4.5.0:

https://github.com/Z3Prover/z3

[2] 接下来,我运行了这个命令:

./build/z3 smt.string_solver=z3str3 -smt2 example.txt

[3] example.txt 的位置是:

(declare-const s1 String)
(declare-const s2 String)
(declare-const s3 String)
(declare-const s4 String)

(assert (= (str.len s1) 1))
(assert (= (str.len s2) 2))
(assert (> (str.len s4) 4))
(assert (= (str.++ s1 s2) s3))
(assert (str.contains s4 s3))

(check-sat)
(get-value (s1 s2 s3 s4))

[4]我得到了我所期望的:

sat
((s1 "d")
 (s2 "af")
 (s3 "daf")
 (s4 "bdafaaaI"))

[5]但是,我找不到对应的API Z3字符串函数, 因此我可以从我的 C++ 应用程序逐步构建公式。

我期望的是这样的:

z3_mk_concat(...)
z3_mk_str_contains(...)
etc.

但我找不到任何接近的东西......

非常感谢任何帮助,谢谢!

最佳答案

字符串是一个相当新的功能,随着我们从当前方法中吸取教训,它正在得到改进。使用最新的每晚构建版本会更好。 C++ API 包含对字符串操作的支持。

关于string - Z3 字符串 : finding the API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976843/

相关文章:

java - 如何在 Travis-CI 机器上设置 Z3 解算器

c - 如何删除C中的特殊字符?

swift - 用另一个字符串替换一个字符串

z3 - Z3 是否支持 Real-to-Int 转换?

linux - 相同的输入,Z3 在 Windows 上工作,但在 Linux 上给出段错误

python - 在 bool 列表上创建或约束

ruby - 将 levenshtein 算法的 damerau 版本优化为优于 O(n*m)

string - Redis 字符串还是集合?

java - 如何将整数包含到另一个变量的名称中

python - Z3 优化,严格不等式