即使对于最简单的算术SMT问题,也需要存在量词来声明符号变量。通过反求约束,可以将∀量词转化为∃。因此,我可以在QF_*逻辑中使用这两种方法,而且它们都能工作。
我想,“量词免费”对于这样的SMT逻辑来说意味着什么,但究竟是什么呢?
发布于 2019-02-19 10:19:50
他的说法是
通过反转约束,可以将
∀量词转换为∃。
AFAIK有以下两种关系:
∀x.φ(x) <=> ¬∃x.¬φ(x)
¬∀x.φ(x) <=> ∃x.¬φ(x)由于无量词SMT公式φ(x)与其存在闭包∃x.φ(x)相等,我们可以利用SMT理论中的无量词片段来表示一个(简单)否定的泛量化发生,AFAIK也是一般公式(例如[∃x.]φ(x)是unsat unsat ∀x.¬φ(x)__¹)上的一个(简单)正出现。
1:假设φ(x)是无量词的;正如@Levent在他的回答中指出的那样,当φ(x)和¬φ(x)都可以满足时,这种方法是不确定的。
但是,例如,我们无法使用SMT的无量词片段为下列量化公式找到模型:
[∃y.]((∀x.y <= f(x)) and (∃z.y = f(z)))对于记录,这是一个编码的OMT问题min(y), y=f(x)作为一个量化的SMT公式。[相关论文]
术语
t是无量词当且仅当t语法上不包含量词.无量词公式φ与其存在闭包等价。 (∃x1.(∃x2 .)。.(∃xn.φ)。。)) 其中x1, x2, . . . , xn是free(φ)的任意枚举,是φ中的自由变量。
术语t,free(t)的自由变量集被归纳地定义为:
free(x) = {x}如果x是变量,free((f t1 t2 . . . tk)) = \cup_{i∈[1,k]} free(ti),free(∀x.φ) = free(φ) \ {x},和free(∃x.φ) = free(φ) \ {x}。发布于 2019-02-19 21:15:16
帕特里克给出了一个很好的答案,但这里还有一些想法。(我本来会把这个作为评论的,但StackOverflow认为这太长了!)
x < 10。这显然是可满足的,它的否定x >= 10也是如此。所以,你不能总是通过玩这个把戏来摆脱量词。只有当你想证明某件事时,它才能起作用:然后你可以否定它,看看这种否定是否是不可满足的。如果你关心的是找到一个公式的模型,这个方法就不适用了。https://stackoverflow.com/questions/54745126
复制相似问题