在 z3 中如何获取字符串的上部?
In z3 How do I get the upper of a string in?
我想断言我的字符串变量的 upper 等于一个字符串值。例如
> v = z3.String('var')
> v.upper() == z3.StringVal('HELLO')
但是,我没有看到从 z3 的 string API 获得上层的方法。我该如何实现?
我发现两个类似的问题 and ,看起来很痛苦。这仍然是最先进的吗?
是的,这就是最先进的技术。没有其他方法可以使用 z3.
提供的字符串 API
请注意,这对字符串和序列都是一个问题,问题的症结在于没有API访问某个位置的"element"。 (在 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。但对于如此简单的事情来说,它需要做很多工作,我希望底层求解器得到支持。)
我想断言我的字符串变量的 upper 等于一个字符串值。例如
> v = z3.String('var')
> v.upper() == z3.StringVal('HELLO')
但是,我没有看到从 z3 的 string API 获得上层的方法。我该如何实现?
我发现两个类似的问题
是的,这就是最先进的技术。没有其他方法可以使用 z3.
提供的字符串 API请注意,这对字符串和序列都是一个问题,问题的症结在于没有API访问某个位置的"element"。 (在 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。但对于如此简单的事情来说,它需要做很多工作,我希望底层求解器得到支持。)