Z3字符串:找到API

时间:2017-08-31 08:31:43

标签: 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.

但我无法找到任何接近......

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

1 个答案:

答案 0 :(得分:3)

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