TLC无法处理此规范

时间:2018-11-22 02:25:49

标签: tla+ tlc

我有一个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 的示例”。

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

问题出在我在\subseteq中使用Init,如此处所示:\in works, while \subseteq gives a "identifier undefined" error