单项式和子句谓词抽象的复杂度与算法及高效直觉定理证明
单项式抽象相关定理
在程序分析中,有关于单项式抽象的几个重要定理。
定理 3 表明,公式 SymbInferMonome(Prog, P) 可满足当且仅当 InferMonome(Prog, P) 为假。其证明过程如下:
- “ =⇒”:假设 SymbInferMonome(Prog, P) 可满足,对于满足该公式的模型 M,可将其拆分为一组模型 {Mi}i,其中 Mi 为 φi 中变量的第 i 个副本赋值,仅在 bi p 和 guess 的值上达成一致。并且,bi p 的赋值可用于构建集合 Qi;当 bi p 在 M 中为真时,Qi+1 ←Qi ∪{p}。
- “⇐=”:假设 InferMonome(Prog, P) 返回假。根据引理 2,可通过模型 {Mi}i 的并集构建模型 M,并为 bi p 进行如下赋值:若 Qi+1 \ Qi = {p},则将 bi p 赋值为真;在其他情况下,将 bi p 赋值为假。该模型 M 满足 SymbInferMonome(Prog, P)。
定理 4 指出,对于在 wp 和布尔连接词下封闭的断言逻辑,InferMonome(Prog, P) 的复杂度与 Check(Prog, I) 的复杂度相匹配。因为 SymbInferMonome(Prog, P) 得到的公式在 P 和任何谓词 p ∈P 的 wp(body, p) 的大小上是多项式的,所以检查 SymbInferMonome(Prog, P) 可满足性的复杂度就是 Check(Prog, I) 所表达的断言逻辑中检查断言的复杂度。
推论 1 说明,如果 Check(Prog, I) 的决策问题
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



