级联:C断言检查器和演绎引擎
1. 工具介绍
Cascade 是一个用于检查 C 程序中断言的工具,作为多阶段验证策略的一部分。它接收 C 程序和一个控制文件作为输入,该控制文件指定了一个或多个需要检查的断言以及(可选的)对程序行为的一些限制。对于每个断言,Cascade 会产生一个违反该断言的具体执行路径,或者生成一个证明表明该断言不会被违反。
2. 设计架构
Cascade 的总体设计包括一个核心模块,该模块接收代表 C 程序的抽象语法树(AST)和一个控制文件,构建与控制文件中指定的断言相对应的验证条件。以下是 Cascade 的设计架构图:
graph TD;
A[Cascade] --> B[核心模块];
B --> C[抽象语法树];
B --> D[控制文件];
B --> E[定理证明器接口];
B --> F[内存模块];
C --> G[EDG 解析器];
E --> H[CVC Lite];
F --> I[整数数组内存模型];
3. 技术细节
3.1 抽象语法树
Cascade 使用抽象语法树的内部表示形式,并且目前使用 EDG(一个强大的 C 程序解析器)作为前端来创建抽象语法树。抽象语法树的内部表示形式使得所有操作都可以在内部进行,完全分离了前端负责构建抽象语法树的部分。以下是抽象语法树的简单示例:
超级会员免费看
订阅专栏 解锁全文
2023

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



