“直接比较无限行为集合通常困难。可建立表示关系 $R$,把每个具体实现状态关联到抽象规格状态,再证明模拟:初始状态被覆盖,每个实现步骤都由规格的一个可见步骤或若干允许的内部步骤匹配。”
一步模拟的方向 ​
设两个标号转移系统
关系
量词次序很重要:对具体系统的每一步,抽象系统可以选择一个匹配后继。不能先固定一个
若这样的关系存在,写作
一条状态配对轨迹 ​
具体计数器状态为整数 inc,转移
令
该关系覆盖每个整数和唯一奇偶摘要,且每步封闭,因此给出模拟。抽象状态遗忘计数器大小,却保留 inc 交替改变奇偶性的行为。
若抽象系统遗漏
可见性质与行为包含 ​
沿模拟关系逐步选择匹配后继,可用路径长度归纳证明:每条具体有限动作轨迹也是抽象轨迹。对无限轨迹还要依赖逐步选择或适当的路径构造条件。
因此抽象系统若满足对所有轨迹封闭的安全性质,具体系统也满足它。不过这项传递依赖性质只观察被模拟保留的标签或状态命题。若抽象状态没有保存 balance<0,不能从模拟关系凭空推出余额性质。
抽象系统可以拥有额外行为,所以反方向通常不成立。抽象模型发现反例时,它可能只走了具体系统无法实现的路径;这就是 abstraction refinement 要排除的伪反例来源。
若状态还带原子命题,关系通常另要求相关状态满足相同观察,或至少让具体命题蕴含抽象命题。否则可以把所有具体状态关联到一个没有任何标记的抽象自环,动作匹配形式上成立,却无法传递待证状态性质。模拟证明必须同时写出转移和观察的保存义务。
弱模拟与内部步骤 ​
若标签集含内部动作
表示若
允许零步匹配会隐藏实现细化出的内部工作,但也可能掩盖 divergence:具体系统无限执行
预序而非自动等价 ​
模拟关系具有方向性。恒等关系给出自反性,两个模拟关系的关系复合给出传递性,所以系统间“存在模拟”通常形成预序;不同系统可能互相模拟但不是同一个语法对象。
只存在
模拟还不同于测试若干对应状态。关系可以一对多、多对一;证明责任是初始覆盖和逐步闭包,而不是构造一个看似自然却未验证的映射。
参考资料
- Robin Milner, Communication and Concurrency, Prentice Hall, 1989, Chs. 4–5。
- Nancy A. Lynch and Frits W. Vaandrager, “Forward and Backward Simulations,” Information and Computation 121(2), 1995, pp. 214–233。
- Davide Sangiorgi, Introduction to Bisimulation and Coinduction, Cambridge University Press, 2012, Chs. 1–2。