静态分析中逻辑公式的有限差分:维护仪器谓词的策略
在静态分析领域,维护仪器谓词是一个关键问题。当执行一个语句时,逻辑结构会发生转变,如何准确地获取新结构中仪器谓词的值,是提高分析精度的重要环节。
1. 逻辑结构与谓词转移
执行语句 st 会将代表执行前存储的逻辑结构 S 转换为代表执行后存储的新结构 S′ 。 S′ 的核心谓词构成的结构称为原型结构,记为 S′proto ,其创建过程可表示为:
对于每个 c ∈ C 和 u1, ..., uk ∈ US ,
ιS′proto(c)(u1, ..., uk) := [[τc,st(v1, ..., vk)]]S3 ([v1 ↦u1, ..., vk ↦uk]) 。
一般来说,比较 S′proto 和 S 的各种谓词,会发现有些元组被添加,有些被删除。
2. 仪器谓词的维护问题
假设 ψp 定义了仪器谓词 p ,静态分析引擎应如何获取 S′ 中 p 的值呢?
- 核心范式 :如果仪器谓词的定义公式仅用核心谓词表示,则称其处于核心范式。通过反复替换,总可以将定义公式转换为核心范式。当 ψp 处于
超级会员免费看
订阅专栏 解锁全文
1万+

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



