| 摘要 | 第5-6页 |
| ABSTRACT | 第6-7页 |
| 第1章 绪论 | 第14-19页 |
| 1.1 研究背景 | 第14-16页 |
| 1.1.1 高可信软件 | 第14页 |
| 1.1.2 软件测试和形式验证 | 第14-15页 |
| 1.1.3 自动定理证明和Z3 | 第15页 |
| 1.1.4 相关工作比较 | 第15-16页 |
| 1.2 本文概述 | 第16-19页 |
| 1.2.1 研究工作 | 第16-17页 |
| 1.2.2 主要贡献 | 第17页 |
| 1.2.3 章节安排 | 第17-19页 |
| 第2章 验证条件证明器的项目背景和设计概要 | 第19-25页 |
| 2.1 安全C语言验证系统 | 第19-22页 |
| 2.1.1 安全C语言 | 第19页 |
| 2.1.2 安全C语言验证系统框架 | 第19-21页 |
| 2.1.3 安全C语言验证条件 | 第21-22页 |
| 2.2 安全C语言验证条件证明器 | 第22-24页 |
| 2.2.1 验证条件证明器概要 | 第22-23页 |
| 2.2.2 验证条件证明器架构和接口 | 第23-24页 |
| 2.3 本章小结 | 第24-25页 |
| 第3章 验证条件翻译方案的设计和实现 | 第25-44页 |
| 3.1 验证条件的翻译流程 | 第25-32页 |
| 3.1.1 翻译的源语言SCSL及其中间表示形式 | 第25-29页 |
| 3.1.2 翻译目标语言Z3 SMT2 | 第29页 |
| 3.1.3 验证条件的翻译框架设计和实现 | 第29-32页 |
| 3.2 SCSL断言语法树中表达式的翻译 | 第32-41页 |
| 3.2.1 各类型的表达式翻译策略 | 第32-37页 |
| 3.2.2 几类原SCSL中特有类型的Z3 SMT2构造和翻译策略 | 第37-40页 |
| 3.2.3 逻辑对象和附加断言翻译策略 | 第40-41页 |
| 3.3 安全C程序验证中Z3的不足之处的简要分析 | 第41-43页 |
| 3.3.1 安全C程序验证中Z3的表达能力不足分析 | 第41-42页 |
| 3.3.2 安全C程序验证中Z3的证明能力不足分析 | 第42-43页 |
| 3.4 本章小结 | 第43-44页 |
| 第4章 逻辑字符串类型及其翻译方案的设计与实现 | 第44-58页 |
| 4.1 SCSL逻辑字符串类型及操作集 | 第44-49页 |
| 4.1.1 SCSL逻辑字符串类型 | 第44-45页 |
| 4.1.2 SCSL字符串类型的操作集 | 第45-49页 |
| 4.2 SCSL字符串类型的程序标注实例 | 第49-50页 |
| 4.3 SCSL逻辑字符串类型在Z3上的实现方案 | 第50-57页 |
| 4.3.1 Z3 SMT2字符串类型 | 第51页 |
| 4.3.2 Z3 SMT2字符串类型的操作集 | 第51-57页 |
| 4.4 本章小结 | 第57-58页 |
| 第5章 引理证明框架设计和实现 | 第58-67页 |
| 5.1 归纳谓词在程序验证中的必要性 | 第58-59页 |
| 5.2 归纳引理在程序验证中的必要性 | 第59-61页 |
| 5.3 谓词和引理的序关系 | 第61-62页 |
| 5.3.1 谓词的序关系概念和定义 | 第61-62页 |
| 5.3.2 引理的序关系概念和定义 | 第62页 |
| 5.4 引理证明框架和算法细节 | 第62-66页 |
| 5.4.1 引理证明算法框架简介 | 第63页 |
| 5.4.2 引理的分类 | 第63页 |
| 5.4.3 引理证明的依赖分析 | 第63页 |
| 5.4.4 单条引理的归纳证明过程 | 第63-65页 |
| 5.4.5 引理证明完整算法过程 | 第65-66页 |
| 5.5 本章小结 | 第66-67页 |
| 第6章 实例分析和测试结果 | 第67-75页 |
| 6.1 字符串类型的翻译实例 | 第67-71页 |
| 6.2 引理正确性的证明实例 | 第71-74页 |
| 6.3 本章小结 | 第74-75页 |
| 第7章 总结及展望 | 第75-77页 |
| 7.1 总结和相关工作对比 | 第75-76页 |
| 7.2 不足和进一步工作展望 | 第76-77页 |
| 参考文献 | 第77-80页 |
| 致谢 | 第80-82页 |
| 在读期间发表的学术论文与取得的其他研究成果 | 第82页 |