代理模型检查:原理、应用与未来方向
1. 验证NetBill协议
NetBill协议是一个涉及客户(Cus)和商家(Mer)就商品进行交互的协议。协议始于客户请求报价,即创建关于内容φ1的承诺。商家有两种选择:拒绝请求,意味着拒绝该承诺,协议结束;或者接受请求(即接受承诺),然后提出报价(即创建关于内容φ2的另一个承诺)。
协议的活性示例可以用以下公式表示:
[AG(Cr(Ag1,SC(Ag1,Ag2,\varphi1)) \Rightarrow EF(S at(Ag1,SC(Ag1,Ag2,\varphi1)))]
NetBill协议的状态数量计算如下:
NetBill的规模为 (|M| = (|S_{Ag1}|×|S_{Ag2}|×|S_{NetBill}|)+|R|),其中 (Ag1) 是客户,(Ag2) 是商家。根据客户和商家允许执行的动作,(|S_{Ag1}| = 9),(|S_{Ag2}| = 13)。考虑到每个动作的规模,(|S_{NetBill}| = 22)。总共,此案例研究所需的状态数量 (|S| = 2574 \approx 2.5 · 10^3)。如果考虑所有可能的转换,理论上 (|R| \approx 17 · |S|^2),所以 (|M| \approx 10^{10})。
使用CWB - NC和MCMAS对NetBill协议进行模拟验证,结果如下表所示:
|工具|模型大小(状态/转换)|构建模型时间(秒)|验证时间(秒)|总执行时间(秒)|
| ---- | ---- | ---- | ---- | ---- |
|CWB - NC|2593/5911|0.125|0.359|0.