等效量词免费配方

时间:2012-05-01 17:00:16

标签: z3

我想知道Z3是否可以在量化消除后显示相应的公式。

示例(存在k)(i×k)= 1且k> 1。五 相当于

我> 0和5 i - 1< 0

此处,量词k已被淘汰。

这可能吗?

谢谢, Kaustubh。

2 个答案:

答案 0 :(得分:2)

是的,Z3可以检查两个公式是否相同。检查pq是否相同。我们必须检查(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不会消除量词。