级联: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 程序解析器)作为前端来创