如何对依赖于未绑定变量的模块进行模型检查?

How do I model-check a module that depends on an unbound variable?

我现在正在经历指定系统,我对如何对以下模块进行模型检查感到有点困惑:

---------------------------- MODULE BoundedFIFO ----------------------------
EXTENDS Naturals, Sequences
VARIABLES in, out
CONSTANT Message, N
ASSUME (N \in Nat) /\ (N > 0)

Inner(q) == INSTANCE InnerFIFO

BNext(q) == /\ Inner(q)!Next
            /\ Inner(q)!BufRcv => (Len(q) < N)

Spec == \EE q : Inner(q)!Init /\ [][BNext(q)]_<<in, out, q>>
=============================================================================

我看到 InitBNext 公式都是运算符,由 q 参数化。我如何将其提供给模型检查器?

你不能:\E x : P(x) 是一个无界表达式,TLC 无法处理。 Specifying Systems 中的许多规范无法建模。最近的指南,例如 TLA+ HyperbookLearn TLA+,更加谨慎地保持其所有规范的可建模性。