静态分析中逻辑公式的有限差分
1. 引言
在程序分析领域,当语句的语义用描述核心谓词值变化的逻辑公式表达时,会面临一个挑战:如何在核心谓词值改变时,反映出这些变化对通过逻辑公式定义的插桩谓词(也称为派生谓词或视图)值的影响。本文提出的算法能够将插桩谓词的定义公式转换为谓词维护公式,从而自动生成抽象语义转移函数中处理插桩谓词的部分,且该算法的运行时间与插桩谓词定义公式的大小呈线性关系。
这项研究最初源于基于三值逻辑的静态分析工作,但实际上,任何依赖逻辑(二值或三值)来表达程序语义的分析方法都可能从这些技术中受益。
2. 背景知识
2.1 带传递闭包的二值一阶逻辑
- 公式语法 :在词汇表 $P = {eq, p_1, …, p_n}$ 上的公式定义如下:
p ∈P
ϕ ::= 0 | 1 | p(v1, ..., vk)
ϕ ∈Formulas
| (¬ϕ1) | (ϕ1 ∧ϕ2) | (ϕ1 ∨ϕ2) | (∃v: ϕ1) | (∀v: ϕ1)
v ∈Variables
| (RTC v′1, v′2 : ϕ1)(v1, v2)
- 自由变量 :公式的自由变量集按常规方式定义。“RTC” 表示自反传递闭包。在 $\phi \equiv (RTC v’_1, v’_2 : \phi_1)(v_1, v_2)$ 中,若 $\phi_1$ 的自由变量集为 $V$,则要求 $v_1, v_2 \notin V
超级会员免费看
订阅专栏 解锁全文
2698

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



