我有一个TLA +模块,总的来说,看起来像这样:
--- MODULE Group ---
CONSTANTS People
VARIABLES members
Join(person) == ...
Leave(person) == ...
Init == members \subseteq People
Next == \E p \in People :
\/ Join(p)
\/ Leave(p)
====================
当我尝试使用TLC对其进行模型检查时,出现以下错误:
TLC引发了意外的异常。 这可能是由于规格或型号错误引起的。 请参阅用户输出或TLC控制台以获取发生情况的线索。 异常是java.lang.RuntimeException : TLC无法处理此规范: 模块组的X行,Y列到Z行,T列
...指向Next
的全部内容。
我相信我的Next
写得很好,因为这是一个示例模型,它与我的Next
非常相似:https://github.com/tlaplus/Examples/blob/master/specifications/aba-asyn-byz/aba_asyn_byz.tla#L110
此外,Leslie Lamport's Specifying Systems的14.2.2节说:
仅当该表达式等于一个有限集合[...]时,TLC才可以计算该表达式。 TLC仅能枚举集合 S :
,才会评估以下形式的表达式:
并提供“在 S 中存在 x 这样的 p 的示例”。
如何解决此错误?
答案 0 :(得分:0)
问题出在我在\subseteq
中使用Init
,如此处所示:\in works, while \subseteq gives a "identifier undefined" error