我要求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一次性消除所有量词?
答案 0 :(得分:1)
感谢错误报告。它已经在不稳定的分支中得到修复。