在SMT上下文中,“无量化逻辑”是什么意思?

时间:2019-02-18 10:27:36

标签: z3 smt sbv

即使对于最简单的SMT算术问题,也需要存在量词来声明符号变量。通过反转约束,量词可以变成。因此,我可以在QF_*逻辑中同时使用它们,并且可以使用。

我认为,“无量化器”对于这种SMT逻辑来说还有其他含义,但是究竟是什么呢?

2 个答案:

答案 0 :(得分:3)

声称是

  通过反转约束,可以将

量词转换为

AFAIK ,以下两个关系成立:

 ∀x.φ(x) <=> ¬∃x.¬φ(x)
¬∀x.φ(x) <=>  ∃x.¬φ(x)

由于无量词的SMT公式φ(x)与其存在的闭包∃x.φ(x)相当,因此我们可以使用SMT理论的无量词片段来表示< em>(简单)否定了普遍量化的发生,而 [AFAIK] 也是(简单)平凡公式的普遍量化的肯定发生< / em> (例如,如果[∃x.]φ(x)unsat,则∀x.¬φ(x)¹)

¹:假设φ(x)是无量词的;正如@Levent Erkok在他的回答中指出的那样,当φ(x)¬φ(x)都令人满意时,这种方法尚无定论

但是,例如,我们无法使用SMT的无量词片段为以下量化公式找到模型:

[∃y.]((∀x.y <= f(x)) and (∃z.y = f(z)))

对于记录,这是OMT问题min(y), y=f(x)的编码,作为量化的SMT公式。 [related paper]


  

术语t在语法上不包含任何量词,而t在语法上不包含量词。无量词的公式φ与其存在的闭包相当。

(∃x1. (∃x2 . . .(∃xn.φ ). . .))
     

其中x1, x2, . . . , xnfree(φ)的任何枚举,φ中的自由变量。

     
     

术语tfree(t)自由变量的集合归纳为:

     
      
  • free(x) = {x}(如果x是变量,
  •   
  • free((f t1 t2 . . . tk)) = \cup_{i∈[1,k]} free(ti)用于功能应用程序,
  •   
  • free(∀x.φ) = free(φ) \ {x}
  •   
  • free(∃x.φ) = free(φ) \ {x}
  •   
     

[source]

答案 1 :(得分:3)

Patrick给出了一个很好的答案,但是这里还有一些想法。 (我会把它作为评论,但是StackOverflow认为这太久了!)

  • 请注意,您不能总是玩“求反”复选框。这之所以起作用,是因为如果对某个属性的求反不能令人满意,则该属性对于所有输入都必须为true。但这并没有反过来:一个属性可以满足,对它的求反也可以满足。简单示例:x < 10。这显然是可以满足的,其否定x >= 10也是可以满足的。因此,您不能总是通过玩这个技巧来摆脱量词。它仅在您想证明某件事时才有效:然后您可以对其进行否定,看看这种否定是否令人满意。如果您担心要寻找公式的模型,则该方法不适用。

  • 您始终可以对公式进行简化,并通过将其替换为未解释的函数来消除所有存在的量词。然后,您最终得到的是一个具有所有前缀通用性的可满足公式。显然,这不是 量词的免费方法,但这是大多数工具自动为您完成的非常常见的技巧。

  • 所有这些令人讨厌的地方是交替量词。无论如何进行简化,如果您有交替的量词,那么您的问题就已经很难解决。 Wikipedia页面上关于量词消除的内容很简洁,但是它提供了一个很好的介绍:https://en.wikipedia.org/wiki/Quantifier_elimination底线:并非所有理论都承认量词消除,甚至那些确实需要指数算法来消除量词的理论也是如此。导致性能问题。