【发布时间】:2012-03-17 19:56:12
【问题描述】:
我正在使用 Z3 SMT 求解器来解决我用 SMTLIB 2 语言在逻辑 QF_BV 中表达的问题。
模型无法满足,我正在尝试让求解器生成 unsat-core。
我的模型包含几个“强制性”约束,我使用 assert 语句指定。
已使用(assert (! (EXPR) :named NAME)) 构造指定了我要考虑用于生成 unsat-core 的断言。
正如预期的那样,Z3 给了我一个unsat。然而,Z3 似乎总是转储一个由所有命名断言组成的“微不足道”的 unsat-core。
我知道存在我的命名断言的一个子集,它是一个 unsat-core。我使用 Yices SMT 求解器找到了这个核心,它经常给我相对较小的未饱和核心。 Yices 模型与 Z3 模型相同(几乎是从 SMT2 到 Yices 输入语言的逐行翻译)。
产生“好”的 unsat-cores 是求解器特有的功能,还是我可以做出任何通用的建议/更改来帮助 Z3 给我一个更好的内核?
【问题讨论】:
标签: z3