假设我在 NuSMV 中编写了一个从状态 S1 开始的模型。我想在这个模型检查器中检查我是否最终在所有情况下都达到状态 S70。现在可视化我编码的 NuSMV 模型,如下所示:
从上面很明显,最终会达到 S70,但可能需要超过 70 个时间步长。为什么?因为您可能会先进入 S2,然后再进入 S3,而不是再进入 S4,然后再回到 S2,这种模式会重复,比如 100 次。NuSMV 软件也考虑了这种可能性,以确认肯定会达到 S70。
问题是 NuSMV 表示无法到达 S70 并生成了一个反例,这正是:-
S1->S2->S3->S2
所以反例就是这4个步骤。但令我惊讶的是,NuSMV 无法弄清楚这种僵局最终会随着时间的推移而得到解决。为什么我得到一个非直观的结果?
我在图中显示的自动机可能是我希望我的 NuSMV 代码表示的,但我错误地编码了一两行,但我不这么认为。否则 NuSMV 怎么会认为它可以从 S2 转到 S3。如果它可以计算出可以从 S2 转到 S3,那么为什么要在 S2 处终止上面的反例呢?
有人可以解释吗?