可以将两个字符串与Z3比较吗?

时间:2018-11-01 08:13:19

标签: z3

我现在正在研究Z3,我正在寻找一种比较两个字符串的方法。

是否可以进行这样的字符串比较?

1 个答案:

答案 0 :(得分:1)

平等/不同

您可以使用=比较是否相等;无需其他特殊语法:

(= a b)

请注意,这对于SMTLib中的所有类型(不仅仅是字符串)都可以统一使用。对于否定,您可以否定结果,也可以使用distinct

(not (= a b))
(distinct a b)

distinct的优势在于它可以接受任意数量的参数,并且可以检查成对不等式,即所有参数互不相同。

词典比较

根据http://smtlib.cs.uiowa.edu/theories-UnicodeStrings.shtml,字符串确实支持通过str.<=进行词法比较。不幸的是,链接理论仍处于草稿形式,据我所知Z3或任何其他SMT求解器(尤其是CVC4)都尚未支持该操作。