我想断言我的字符串变量的 upper 等于一个字符串值。例如
> v = z3.String('var')
> v.upper() == z3.StringVal('HELLO')
但是,我没有看到从z3的string API取得优势的方法。我该怎么做?
答案 0 :(得分:2)
是的,这是最新技术。无法使用z3提供的字符串API来完成此操作。
请注意,这对于字符串和序列都是一个问题,问题的症结在于没有API可以访问某个位置的“元素”。 (在Z3中,字符串只是宽度为8的位向量的序列。)
很久以前,z3提出了添加此API的请求:https://github.com/Z3Prover/z3/issues/1302
您可能想在这里表达您的要求,以便他们可能会增加支持!
(请注意,一些更高级的API通过提供一种简单的方法来访问该位置的元素,从而向用户隐藏了这种复杂性。这是在SBV库中进行的操作:https://github.com/LeventErkok/sbv/blob/master/Data/SBV/List.hs#L135-L171。但这是这么简单的事情需要做很多工作,以至于我希望底层的求解器得到支持。)