首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Z3's seq.unit的CVC4等价

Z3's seq.unit的CVC4等价
EN

Stack Overflow用户
提问于 2018-06-16 05:29:58
回答 1查看 121关注 0票数 2

我试图使用Z3和CVC4运行下面的unsat示例。如果我将"\x00"替换为(seq.unit #x00),那么对于Z3来说这不是问题,但是CVC4抱怨说它不知道seq.unit。

代码语言:javascript
复制
(declare-fun AB_serial_1_version_0 () String)
(declare-fun AB_serial_1_version_1 () String)

(assert (= (str.len AB_serial_1_version_0) 16))
(assert (= (str.len AB_serial_1_version_1) (str.len AB_serial_1_version_0)))
(assert (= (str.at AB_serial_1_version_1 15) "\x00"))
;;; (assert (= (str.at AB_serial_1_version_1 15) (seq.unit #x00)))

(assert (= (str.indexof (str.substr AB_serial_1_version_1 0 (- 16 0)) "\x00" 0) (- 0 1)))
(check-sat)

下面是命令行调用:

代码语言:javascript
复制
cvc4 --strings-exp --quiet --produce-models --lang=smt2 ./example.txt

下面是cvc4在使用seq.unit行时抱怨的地方:

代码语言:javascript
复制
(error "Parse Error: ./example.txt:7.54: Symbol 'seq.unit' not declared as a variable

...= (str.at AB_serial_1_version_1 15) (seq.unit #x00)))
                                        ^
")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 11:05:26

这是CVC4 4/问题给出的答案(这里是为了完整性而提出的):

谢谢你的基准。不幸的是,目前没有任何东西可以在位向量和字符串之间进行转换。 我们计划很快增加对序列的支持(第1122期)。当然,对于序列还没有SMT标准。当我们添加对序列的支持时,我将记住这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50885233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档