z3 中 `str.indexof` 和 `seq.indexof` 的区别

Difference between `str.indexof` and `seq.indexof` in z3

在z3 tutorial中,str.indexofseq.indexof是分开提到的。然而,在Z3 C API中,只有一个相关函数Z3_mk_seq_index。该函数是否对 8 位 BitVec 序列的情况进行特殊情况处理?意思是,如果我的序列都是字符串,Z3_mk_seq_index 是否仍会使用 z3str3 代码库?还是会求助于 z3 的序列求解器?

8 位值序列和 z3 中的字符串没有区别。事实上,所有字符串都被视为 8 位值的序列。

seq.indexofstr.indexof 之间的唯一区别是它们的类型。后者只是前者的特化。

要在常规字符串求解器和 z3str3 之间切换,只需使用适当的命令行开关 smt.string_solver。有效选项为 seqz3str3auto