我现在正在研究Z3,我正在寻找一种比较两个字符串的方法。
是否可以进行这样的字符串比较?
答案 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)都尚未支持该操作。