汇编语言形式化验证的模型、方法和工具
摘要 | 第4-5页 |
Abstract | 第5-6页 |
第一章 绪论 | 第11-16页 |
1.1 引言 | 第11页 |
1.2 相关工作 | 第11-14页 |
1.2.1 UCLA Secure Unix | 第11-12页 |
1.2.2 KIT | 第12页 |
1.2.3 L4.verified | 第12-13页 |
1.2.4 Flint | 第13页 |
1.2.5 Verisoft | 第13-14页 |
1.3 论文内容 | 第14页 |
1.4 论文组织结构 | 第14-16页 |
第二章 相关理论和工具 | 第16-21页 |
2.1 计算机体系结构 | 第16页 |
2.2 霍尔逻辑 | 第16-18页 |
2.2.1 霍尔三元组 | 第16-17页 |
2.2.2 推理规则 | 第17页 |
2.2.3 最弱前置条件 | 第17-18页 |
2.2.4 最强后置条件 | 第18页 |
2.3 Isabelle | 第18-21页 |
2.3.1 常用关键字 | 第18-19页 |
2.3.2 基本类型 | 第19页 |
2.3.3 函数定义 | 第19页 |
2.3.4 定理证明 | 第19页 |
2.3.5 Isar | 第19-21页 |
第三章 模拟运行环境 | 第21-26页 |
3.1 模拟寄存器组 | 第21页 |
3.2 构建系统状态 | 第21-22页 |
3.3 模拟指令集 | 第22-23页 |
3.4 指令的实现举例 | 第23-24页 |
3.5 指令的读取 | 第24页 |
3.6 指令的执行 | 第24-25页 |
3.7 本章总结 | 第25-26页 |
第四章 顺序和分支结构证明方法 | 第26-32页 |
4.1 最弱前置条件 | 第26-27页 |
4.2 顺序结构证明方法 | 第27-29页 |
4.3 分支结构证明方法 | 第29页 |
4.4 函数调用的处理方法 | 第29-31页 |
4.4.1 call指令的实现 | 第30页 |
4.4.2 ret指令的实现 | 第30页 |
4.4.3 不可重用的证明方法 | 第30页 |
4.4.4 高可重用的证明方法 | 第30-31页 |
4.5 本章总结 | 第31-32页 |
第五章 循环结构证明方法 | 第32-40页 |
5.1 迭代次数不定的链表循环 | 第32-38页 |
5.1.1 循环不变式 | 第32-33页 |
5.1.2 循环的可终止性 | 第33页 |
5.1.3 数学归纳法 | 第33页 |
5.1.4 归纳准备 | 第33-37页 |
5.1.4.1 首次循环迭代前的系统状态 | 第33-34页 |
5.1.4.2 单次循环迭代的执行效果 | 第34-35页 |
5.1.4.3 N次循环迭代的执行效果 | 第35页 |
5.1.4.4 循环不变部分 | 第35-36页 |
5.1.4.5 剩余链表长度 | 第36-37页 |
5.1.5 归纳应用 | 第37-38页 |
5.2 迭代次数一定的普通循环 | 第38-39页 |
5.3 本章总结 | 第39-40页 |
第六章 证明举例 | 第40-50页 |
6.1 待证函数 | 第40页 |
6.2 最弱前置条件 | 第40-41页 |
6.3 顺序结构证明 | 第41-42页 |
6.4 首次循环迭代前的系统状态 | 第42-43页 |
6.5 单/多次循环迭代的执行效果 | 第43页 |
6.6 循环不变部分 | 第43-44页 |
6.7 剩余链表长度 | 第44页 |
6.8 辅助定理 | 第44-46页 |
6.9 循环定理Pass1 | 第46-48页 |
6.10 循环定理Pass2 | 第48页 |
6.11 后续证明 | 第48-50页 |
第七章 辅助证明脚本 | 第50-57页 |
7.1 执行效果 | 第50-52页 |
7.1.1 自动翻译脚本 | 第50-51页 |
7.1.2 辅助证明脚本 | 第51-52页 |
7.2 具体实现 | 第52-56页 |
7.2.1 自动翻译脚本 | 第52-55页 |
7.2.2 辅助证明脚本 | 第55-56页 |
7.3 本章总结 | 第56-57页 |
第八章 总结与展望 | 第57-58页 |
参考文献 | 第58-60页 |
致谢 | 第60-61页 |
攻读硕士学位期间参与的科研课题 | 第61-62页 |