指针程序的自动验证
在程序开发中,指针程序的验证是一项具有挑战性的任务。本文将介绍一种用于指针程序自动验证的方法,包括抽象域、规范化抽象状态、规范化函数、分析过程以及完整分析等内容。
1. 抽象域
抽象域 D 由形状图集合和文法的对组成,即 D = {⊤} + ℘nf(Graph) × Grammar 。其中,元素 ⊤ 表示分析因程序存在安全错误或数据结构过于复杂而无法产生有意义的结果。每个抽象状态 (G, R) 的含义由 means(G, R) = rec meansg(R) in ⋀(s,g)∈G meanss(s, g) 定义。
2. 规范化抽象状态和规范化
2.1 规范化抽象状态
一个抽象状态 (G, R) 满足以下两个条件时被认为是规范化的:
- 所有形状图 (s, g) 都足够抽象,即可识别的堆对象被非终结符替换。
- 抽象状态没有冗余,即所有形状图不相似,所有非终结符的定义也不相似。
2.1.1 规范化形状图
形状图在“最大程度”折叠时是规范化的。如果 g(a) 是一个对,并且从 a 到被多次引用的共享符号位置没有路径,则符号位置 a 在 (s, g) 中是可折叠的。当形状图 (s, g) 的
超级会员免费看
订阅专栏 解锁全文
1350

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



