一阶CTL模型检查:实现复杂系统验证的新方法
1. 引言
在现代硬件验证中,符号模型检查(Symbolic Model Checking)已经成为最成功的形式化方法之一。它不仅能够验证或调试来自工业实践的设计,还能与抽象技术和组合推理方法结合使用。然而,当需要对数据路径进行详细推理时,即使是这些结合方法的大多数设计也会遇到挑战。这是因为数据部分通常太大(甚至是无限的)且太复杂,难以处理。为了应对这一挑战,我们提出了一种新的方法,即一阶CTL(Computation Tree Logic)模型检查程序,用于验证具有大型甚至无限数据空间的系统是否满足一阶CTL规范。
2. 方法论
2.1 控制与数据分离
我们的方法将设计的控制部分与数据的一阶验证条件生成相结合,以分离验证任务。具体而言,我们将系统变量划分为两类:控制变量和数据变量。控制变量的值被扩展为二元决策图(Binary Decision Diagram, BDD)表示,而数据变量则以其与验证任务相关的属性形式进入。这种方法不仅降低了数据引起的复杂性,还允许我们利用BDD的高效性来处理较大的控制部分。
2.2 技术实现
2.2.1 二元决策图(BDD)
我们使用BDD来表示和生成一阶注释。BDD是一种紧凑的数据结构,用于表示布尔函数,特别适用于符号模型检查。通过这种方式,我们避免了中间调用定理证明器的需求,从而提高了效率。此外,BDD还可以处理更大的控制部分,因为它们能够在紧凑的表示中捕捉复杂的逻辑关系。
2.2.2 算法描述
我们的算法增量地计算每个一阶Kripke结构的状态和每个控制赋值