带循环折叠的反向符号执行技术解析
1. k - 归纳法的特性与证明
k - 归纳法在程序验证中有重要作用,它的结果取决于程序路径集合 (P) 的特性:
- 若 (P) 包含初始路径,返回错误见证。
- 若 (P) 有限且无初始路径,返回正确。
- 若 (P) 无限且无初始路径,不终止。
证明过程如下 :
1. 假设程序不正确 :即 (P) 包含初始路径,设 (\pi \in P) 是最短的可行初始错误路径,长度为 (n = |\pi|)。对于 (0 < k < n),由于 (\pi) 长度最小,长度为 (k) 的所有可行初始路径都是安全的,且长度为 (k + 1) 的 (\pi) 的后缀是可行错误路径,前缀长度为 (k) 是安全的,归纳步骤无法证明。当 (k = n) 时,基础情况会将 (\pi) 或另一个长度为 (n) 的可行初始错误路径识别为错误见证。
2. 假设程序正确 :即 (P) 不包含初始路径,基础情况对每个 (k) 都成立。归纳步骤对 (k) 成立当且仅当 (P) 中所有路径长度至多为 (k)。若 (P) 包含长度至少为 (k + 1) 的路径 (\pi),则它也包含长度为 (k + 1) 的后缀,该后缀是可行错误路径,前缀长度为 (k) 是安全的,归纳步骤失败。若 (P) 中所有路径长度至多为 (k),则长度为 (k + 1) 的所有可行路径都是安全的,归纳步骤成立。若 (P) 有限,k - 归纳法在 (k = \max{|\pi| | \pi \in P}) 时返回正确;若 (P) 无限,归纳步骤总是失败,k
超级会员免费看
订阅专栏 解锁全文
18

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



