HyperAIHyperAI

Command Palette

Search for a command to run...

无界客户端-服务器系统的有界模型检测

Ramchandra Phawade Tephilla Prince S. Sheerazuddin

摘要

有界模型检测(Bounded Model Checking, BMC)是一种高效的形式化验证技术,能够对软件系统抽象模型在有限执行步长内的行为进行分析,以验证系统是否满足特定的性质。这些性质通常采用某种时序逻辑进行描述,而系统则被建模为状态转移系统。本文提出了一种新颖的计数逻辑 LC\mathcal{L}{C}LC,用于描述具有任意数量客户端的客户端-服务器系统的时序性质。此外,我们提出了一种二维有界模型检测(2D2D2D-BMC)策略,该策略引入两个可区分的参数:一个用于刻画执行步数,另一个用于表示表示客户端-服务器系统的佩特里网(Petri Net)中所含的令牌数量。这两个参数在检测过程中独立演化,这与传统佩特里网形式化框架下的标准BMC技术存在本质区别。该2D2D2D-BMC策略已集成于名为DCModelChecker的工具中,该工具结合了最先进的满足性模理论(Satisfiability Modulo Theories, SMT)求解器Z3,实现对系统性质的高效验证。系统以佩特里网的形式给出,而使用LC\mathcal{L}{C}LC定义的性质则被编码为SMT可求解的逻辑公式,由Z3进行验证。本工具还可应用于模型检测竞赛(Model Checking Contest, MCC)提供的工业级基准测试实例。我们通过实验结果展示了2D2D2D-BMC策略在实际应用场景中的有效性与可行性。

一句话总结

来自印度理工学院达尔瓦德分校和喀拉拉邦国家技术学院的 Phawade 等人提出了 2D-BMC,这是一种新颖的有界模型检测算法,可同时限制执行步数和令牌数量,用于验证无界 Petri 网针对带线性整数算术的线性时序逻辑(LTL_LIA)的性质,支持并发语义,并在复杂性质上优于现有工具。

主要贡献

  • 我们提出了 2D-BMC,一种新颖的有界模型检测算法,可同时限制无界 Petri 网的执行长度和令牌数量,支持在并发语义下验证带线性整数算术的 LTL(LTL_LIA)性质。
  • 我们为无界 Petri 网的交错执行和并发执行提供了 SMT 编码,允许精确指定基于令牌的不变式和时序性质,超越传统的可达性和覆盖性检查。
  • 我们实现并评估了 DCModelChecker 2.0,展示了其在无界网中生成反例的能力,同时保留网结构,并在选定基准测试中展现出与 TAPAAL 和 ITS-Tools 相当的性能。

引言

作者利用有界模型检测(BMC)在并发语义下验证无界 Petri 网,填补了现有工具主要依赖交错执行且仅检查可达性或覆盖性的空白。先前的方法难以捕捉真正的并发性,且缺乏对更丰富时序性质(如可用 LTL 带线性整数算术 LTL_LIA 表达的性质)的支持。其主要贡献是 2D-BMC —— 一种新颖的 BMC 变体,同时限制执行长度和令牌数量 —— 以及两个工具版本(DCModelChecker 1.0 和 2.0),实现了该方法,支持在交错或并发语义下验证 LTL_LIA 性质,同时生成反例用于调试。

方法

作者采用结构化方法,基于 SMT 的有界模型检测对无界 Petri 网进行建模与验证,重点关注并发语义和二维边界。核心方法整合了形式化网语义、SMT 编码和自定义工具链,以处理用 LTLLIALTL_{LIA}LTLLIA 表达的时序性质。

建模始于标准 Petri 网形式化:一个三元组 N=(P,T,F)N = (P, T, F)N=(P,T,F),其中 PPP 是位置集合,TTT 是迁移集合,FFF 是定义带可选权重的有向弧的流函数。标记 M:PN0M: P \rightarrow \mathbb{N}_0M:PN0 表示网的状态,指示各位置上的令牌分布。迁移根据启用规则触发:迁移 ttt 在标记 MMM 下启用,当且仅当对所有 pPp \in PpP,有 M(p)preN(t,p)M(p) \geq \text{pre}_N(t, p)M(p)preN(t,p)。触发后,后继标记 MM'M 按公式 M(p)=M(p)F(p,t)+F(t,p)M'(p) = M(p) - F(p, t) + F(t, p)M(p)=M(p)F(p,t)+F(t,p) 对所有 pPp \in PpP 计算。可达图记录从初始标记 M0M_0M0 出发的所有可能状态转移。

如下图所示,作者区分了交错语义和并发语义。在交错语义中,每一步仅允许一个迁移触发。相比之下,并发语义允许一个启用迁移的子集 ττ\tau' \subseteq \tauττ 同时触发,前提是前位置的令牌总消耗不超过可用令牌。并发触发规则定义为:

pτ:M(p)=M(p)tτF(p,t)+tτF(t,p)iftτF(p,t)M(p)0.\forall p \in \bullet \tau' : M'(p) = M(p) - \sum_{t \in \tau'} F(p, t) + \sum_{t \in \tau'} F(t, p) \quad \text{if} \quad \sum_{t \in \tau'} F(p, t) - M(p) \geq 0.pτ:M(p)=M(p)tτF(p,t)+tτF(t,p)iftτF(p,t)M(p)0.

该规则支持更紧凑且更真实地表示并行系统行为。

为支持 Z3 等 SMT 求解器进行验证,作者构建了网的符号表示。定义两个关键矩阵:Wt[m][l]Wt[m][l]Wt[m][l] 表示网权重变化(出弧减入弧),iWt[m][l]iWt[m][l]iWt[m][l] 表示入弧权重。迁移函数 TFTFTF 通过组合前提条件(确保触发所需令牌)和后置条件(更新位置标记)构建。对于并发语义,TFTFTF 不强制每步仅触发一个迁移,与交错语义不同。

验证目标是 LTLLIALTL_{LIA}LTLLIA,即扩展了位置令牌计数上整数算术的线性时序逻辑。公式由原子比较(如 (#p<#q)(\#p < \#q)(#p<#q))和时序算子(X, F, G, U)构成。为应用有界模型检测,作者引入二维边界 k=λ+κk = \lambda + \kappak=λ+κ,其中 λ\lambdaλ 限制执行步数,κ\kappaκ 限制令牌总数。有界语义将状态空间限制在长度为 λ\lambdaλ 且最多含 κ\kappaκ 个令牌的执行路径上。

2D-BMC 编码 [M,ψ]λ,κ[\mathcal{M}, \psi]_{\langle \lambda, \kappa \rangle}[M,ψ]λ,κ 将网模型的 SMT 编码 [M]λ,κ[\mathcal{M}]_{\langle \lambda, \kappa \rangle}[M]λ,κ 与否定性质 ψ=¬ϕ\psi = \neg \phiψ=¬ϕ 的编码 [ψ]λ,κ0[\psi]_{\langle \lambda, \kappa \rangle}^0[ψ]λ,κ0(无环路径)或 l[ψ]λ,κ0l[\psi]_{\langle \lambda, \kappa \rangle}^0l[ψ]λ,κ0(含回环至状态 lll 的路径)结合。模型编码递归构建:[M]0,κ[\mathcal{M}]_{\langle 0, \kappa \rangle}[M]0,κ 编码初始状态及令牌边界,[M]λ,κ[\mathcal{M}]_{\langle \lambda, \kappa \rangle}[M]λ,κ 通过添加迁移关系 T(sλ1,sλ)T(s_{\lambda-1}, s_{\lambda})T(sλ1,sλ) 和新状态的令牌边界扩展。

如下图所示,2D-BMC 算法通过递增 kkk 探索状态空间,对每个 kkk 迭代所有可能的 (λ,κ)(\lambda, \kappa)(λ,κ) 对。对每对组合,构建并检查 SMT 公式。若可满足,返回反例轨迹;若不可满足,增加边界。

如下图所示,工具架构接受 PNML 格式的 Petri 网和 LTLLIALTL_{LIA}LTLLIA 性质。预处理模块基于 ANTLR 构建,解析并验证输入,构建内部数据结构。核心模型检测器应用 2D-BMC 算法,为 Z3 生成 SMT 约束。求解器返回 UNSAT(性质在边界内成立)或 SAT 并附带反例轨迹(性质被违反)。

工作流始于将性质 ϕ\phiϕ 否定为 ψ\psiψ 并初始化边界 k=0k=0k=0。对每个 kkk,迭代所有和为 kkk(λ,κ)(\lambda, \kappa)(λ,κ) 对,构建相应 SMT 公式并查询 Z3。搜索持续至找到反例或达到外部终止边界。此系统性探索确保在有界状态空间内全面验证。

实验

  • 通过与 ITS-Tools 在 LTLFireability 性质上对比验证 DCModelChecker 2.0 的正确性,达到 90% 工具置信度,对假性质结果一致确认其可靠性。
  • 展示了验证超出 MCC 表达能力的 FireabilityCardinality 性质的能力,显示更高边界下反例发现率增加。
  • 成功验证其他工具(ITS-Tools、TAPAAL)仅报告为假的无界 Petri 网,而 DCModelChecker 2.0 提供反例轨迹。
  • 验证了 LTL_LIA 中的合成不变式,这是 MCC 工具和 DCModelChecker 1.0 均不具备的能力,扩展了可验证性质的范围。
  • 当前工具因反例生成开销在性能上落后于最先进工具,未来工作将聚焦并发语义和优化编码。

作者使用 DCModelChecker 2.0 验证无界 Petri 网,并与 DCModelChecker 1.0、ITS-Tools 和 TAPAAL 比较性能,显示 DCModelChecker 2.0 一致返回带反例轨迹的假性质,同时与其他工具结果一致。结果表明,DCModelChecker 2.0 执行时间慢于 ITS-Tools 和 TAPAAL,但通过反例生成提供额外诊断价值。尽管当前性能受限,该工具处理无界网并生成轨迹的能力使其成为互补选项。

作者使用 DCModelChecker 2.0 验证 LTLFireability 性质并与 ITS-Tools 对比,通过比较两者对假性质结果一致或 DCModelChecker 2.0 返回反例的情况,达到 0.90 的工具置信度。结果表明,DCModelChecker 2.0 在大多数情况下正确识别假性质,但当 ITS-Tools 报告为真时会产生一些错误输出。该工具的 2D-BMC 策略不完备,如 UNSAT 结果可能在更高边界下变为假。


用 AI 构建 AI

从创意到上线——通过免费 AI 协同编码、开箱即用的环境和最优惠的 GPU 价格,加速您的 AI 开发。

AI 协同编码
开箱即用的 GPU
最优定价

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供