我有以下规格:
------------------------------ MODULE Group ------------------------------
CONSTANTS People
VARIABLES members
Init == members \subseteq People
Next == members' = members
Group == Init /\ [][Next]_members
=============================================================================
(我将这个规范简化到它没有做任何有用的事情的地步。)
当我尝试通过 TLC 运行它时,我收到以下错误:
在评估中,标识符成员要么未定义,要么不是运算符。
错误指向该Init
行。
当我将Init
行更改为:
Init == members \in People
它验证得很好。
我想要前一个功能,因为我的意思是members
成为一个人的集合,而不是一个人。
根据Leslie Lamport's Specifying Systems的第 16.1.6 节,“TLA+ 在集合上提供了以下运算符:”并列出了\in
和\subseteq
。
为什么 TLA+ 不让我使用\subseteq
?