You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Z3中String→String函数的模型输出显示

问题原因

Z3默认的打印配置会将字符串常量展开为字符拼接的底层表示输出,不会直接展示可阅读的字符串字面量,这属于打印格式化的问题,不是模型本身的逻辑错误。

解决方法

在代码初始化阶段调整Z3的全局打印参数,开启字符串字面量打印开关即可:

from z3 import *
# 新增两行配置参数
set_option(pp_string_literals=True)
set_option(model_compress=False)

map = Function('map', StringSort(), StringSort())
c1 = map(StringVal('key1')) == StringVal('value1')
c2 = map(StringVal('key2')) == StringVal('value2')
c3 = map(StringVal('key3')) == StringVal('value3')
c4 = map(StringVal('key4')) == StringVal('value4')
s = Solver()
s.add(And(c1, c2, c3, c4))
print(s.check())
print(s.model())
效果说明

修改配置后运行代码,模型输出的键就会直接显示为"key1"、"key2"等实际的字符串字面量,不会再出现Concat拼接的表达式。

内容的提问来源于stack exchange,提问作者user2852699

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:36:03