“在有限状态系统中,显式状态模型检查可用 BFS 按反例长度枚举可达配置;一旦命中坏状态,父指针给出一条最短转移数的反例轨迹。这里“最短”只相对于所选状态编码与一步转移,BFS 是搜索算法,状…”
形式陈述
状态生成接口
显式状态模型检查不要求预先列出整张图,而是提供三个可计算接口:初始状态枚举器
对安全性质,worklist 版本维护已见集合
每次从
这是模型检查的安全可达性特例。其正确性由三个 worklist 不变量支撑:
若
这段证明依赖状态相等判定与后继生成器忠于模型。哈希遗漏语义变量会错误合并状态;把无关地址或时间戳纳入键,又会阻止本应共享的状态去重。算法框架正确不能补偿错误的状态编码。
直觉
BFS 的最短反例轨迹
设系统初态
最短按转移条数计,不一定是最短现实时间或最容易理解的根因。若边有成本,普通 BFS 的最短性不适用。
BFS frontier 可能非常宽,内存通常是瓶颈。DFS只保留搜索栈与 visited 表,更早深入某条长路径,却不保证最短安全反例。
例子与边界
无限性质与嵌套 DFS
检查 Büchi 接受条件需要寻找从初态可达的接受环。经典 nested DFS 先做外层 DFS;当一个接受状态完成时,再从它启动内层 DFS,检查能否回到仍相关的搜索区域。
若找到 stem
只发现一个接受状态不够。例如
也可以在可达图上做强连通分量(SCC)分解:普通 Büchi 只需找到含接受点的可达循环分量。完整请求系统积图给出了一个可以手算的任务:两个初始积状态展开出五个顶点、七条边,分为三个 SCC。接受点
这个任务的已解变体只删系统等待自环,积仍有五个可达顶点,但仅剩五条边。两个接受点都存在,却没有接受循环;其中一个积点没有后继,是自动机猜测被后续授权否定的结果。后继生成器应返回空集,不得为保持图的 total 性自行补边。
不同 nested DFS 变体对颜色、搜索次序和 on-the-fly 产品构造有严格不变量;把两个普通 DFS 随意嵌套可能漏环或重复指数工作。
复杂度与真实存储
若可达显式图有
每个状态还需序列化、归一化和哈希;每条转移需执行 guard 与 update。若状态包含大堆对象,单个节点成本不是常数。严谨报告应给出状态数、转移数、每状态字节和峰值 frontier。
哈希压缩若允许碰撞并把碰撞视为相等,会漏状态,成为有损搜索;只用哈希定位后再比较完整状态才能保留可靠性。bitstate hashing 明确以可能漏报换内存,结论不能写成完全证明。
工程边界
对称约简、partial-order reduction 与状态压缩可以嵌入显式搜索,但各自需要证明代表状态覆盖原行为。搜索框架相同不意味着约简天然 sound。
动态内存、未界队列和递归栈使状态空间无限。给队列设上界能得到有限模型,却只验证该界内行为;若反例需要更长队列,“无反例”不能推广到原系统。
显式检查的优势是状态和反例直观、算法成本可按展开图解释;缺点是已探索的组合状态仍需逐个表示。状态空间爆炸分析这种增长从何而来,符号模型检查则用一个布尔对象表示整批状态。后者可能压缩规则集合,也可能因表示膨胀更差;两条路线改变表示,不改变满足语义。
推论与应用
搜索状态的规范化
并发状态若含无关进程编号、堆对象地址或消息排列,可以在入 visited 前做 canonicalization,但规范化必须保持后继行为和观察。两个状态排序后字节相同却拥有不同权限或未来动作时,合并会漏路径。正确做法是先证明 canonical representative 与原状态模拟或对称等价,再把它作为去重键,而不是凭数据外观压缩。
无限状态系统不能总靠列出全部状态结束搜索。后向覆盖算法保存向上闭坏状态集的有限最小基,Karp–Miller 树则从初态用 omega 概括可泵大的 Petri 计数。二者都回答覆盖问题,不能把摘要中的一个目标直接当作精确可达状态。
参考资料
-
Rob Gerth, Concise Promela Reference, SPIN 官方参考,1997,Analysis 部分:穷尽搜索、接受环及 bitstate 有损搜索。
-
Gerard J. Holzmann, The SPIN Model Checker, Addison-Wesley, 2004, Chs. 6–9。
-
Edmund M. Clarke, Orna Grumberg, and Doron A. Peled, Model Checking, MIT Press, 1999, Chs. 2, 9。
-
Costas Courcoubetis, Moshe Vardi, Pierre Wolper, and Mihalis Yannakakis, “Memory-Efficient Algorithms for the Verification of Temporal Properties,” Formal Methods in System Design 1, 1992, pp. 275–288。