我想知道Z3是否可以在量化消除后显示相应的公式。
示例(存在k)(i×k)= 1且k> 1。五 相当于
我> 0和5 i - 1< 0
此处,量词k已被淘汰。
这可能吗?
谢谢, Kaustubh。
答案 0 :(得分:2)
是的,Z3可以检查两个公式是否相同。检查p
和q
是否相同。我们必须检查(not (iff p q))
是否不可满足。
您的示例使用非线性算术i*k
。 Z3中的量词消除模块对非线性实算法的支持有限。它基于虚拟术语替换,但并不完整。但是,对于您的示例来说就足够了。
我们必须启用Z3中的量词消除模块和非线性扩展(即虚拟术语替换)。
以下是我们如何在Z3中对您的示例进行编码:http://rise4fun.com/Z3/rXfi
答案 1 :(得分:1)
通常,可以获得消除量词的结果。例如,在rise4fun中输入以下内容:
(declare-const i Real)
(assert (exists ((k Real)) (and (= (* i k) 1.0) (> k 5.0))))
(apply qe)
这种情况涉及非线性算术,而Z3不会消除量词。