(apply qe)不会立刻消除所有量词吗?

时间:2013-08-26 18:22:04

标签: z3 quantifiers

我要求Z3使用SMTLIB 2接口在UFLIA理论中进行量化消除。所以我断言了一个包含21个存在量化变量的公式,其中7个是整数,14个是布尔值。然后我做(apply qe)并且Z3返回一个仍然包含九个存在量化变量的目标,名为(x!1 Int)(x!14 Int)(x!14!1 Int)(x!14!7 Int)。这是否意味着qe策略不会立即消除所有量词?

如果我(assert qe)两次,除了重新命名的量化变量之外,目标保持不变。我尝试(repeat qe),但返回unsupported,同时将:eliminate-variables-as-block参数设置为true也不会改变任何内容。

但是,如果我从目标中获取量化的公式,并自行断言并再次assert qe,Z3会按照我的意愿消除剩余的量词。

请参阅下面的链接了解公式,我是否需要做一些魔术让Z3一次性消除所有量词?

https://gist.github.com/chsticksel/edeb350fa4474713f3df#file-apply-qe-does-not-eliminate-all-quantifiers-at-once-smt

1 个答案:

答案 0 :(得分:1)

感谢错误报告。它已经在不稳定的分支中得到修复。