我现在正在浏览指定系统,我对我如何模型检查以下模块感到有些困惑:
---------------------------- 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>>
=============================================================================
我发现Init
和BNext
公式都是运算符,由q
参数化。我如何将其提供给模型检查器?
答案 0 :(得分:1)
你不能:\E x : P(x)
是一个无限制的表达式,TLC无法处理。 指定系统中的许多规范都无法建模。更新的指南,例如 TLA + Hyperbook 或 Learn TLA + ,更加谨慎,以保持所有规格的可模拟性。