首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Z3py模型返回空

Z3py模型返回空
EN

Stack Overflow用户
提问于 2020-12-30 19:13:08
回答 2查看 79关注 0票数 0

我将z3格式转换为z3py格式,但模型返回空字符串。它应该给我一个相等或超过5个字母的字符串。

代码语言:javascript
复制
(declare-const z String)
(assert (>= (str.len z) 5))
(check-sat)
(get-model)
代码语言:javascript
复制
from z3 import *
s = Solver()
a = String('a')
s.add(Length(a) >= 5)
print(s.check())
print(s.model())

密码有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-30 21:49:17

阿克塞尔解释了为什么这样的打印可能会令人困惑。如果要处理具有这些字符的字符串,处理它们的惯用方法是使用encode方法:

代码语言:javascript
复制
from z3 import *
s = Solver()
a = String('a')
s.add(Length(a) >= 5)
print(s.check())
print(s.model()[a].as_string().encode('unicode_escape'))

这些指纹:

代码语言:javascript
复制
sat
\x00\x00\x00\x00\x00
票数 0
EN

Stack Overflow用户

发布于 2020-12-30 19:48:44

为了找出正在发生的事情,您可以分析解决方案:

代码语言:javascript
复制
from z3 import *
s = Solver()
a = String('a')

s.add(Length(a) >= 5)

print(s.check())
m = s.model()

def showChar(c):
    return c if ord(c) > 20 else "[" + str(ord(c)) + "]"

for c in str(m[a]):
    print(showChar(c))

结果产出:

代码语言:javascript
复制
sat
"
[0]
[0]
[0]
[0]
[0]
"

实际上,字符串有五个或更长的字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65512371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档