\in 有效,而 \subseteq 给出 "identifier undefined" 错误

\in works, while \subseteq gives a "identifier undefined" error

我有以下规格:

------------------------------ MODULE Group ------------------------------
CONSTANTS People
VARIABLES members

Init == members \subseteq People

Next == members' = members

Group == Init /\ [][Next]_members

=============================================================================

(我将此规范简化到没有做任何有用的事情。)

当我尝试通过 TLC 运行 时,出现以下错误:

In evaluation, the identifier members is either undefined or not an operator.

错误指向 Init 行。

当我将 Init 行更改为:

Init == members \in People

验证正常。

我想要前一个功能,因为我的意思是 members 是一群人,而不是一个人。

根据 Leslie Lamport's Specifying Systems 的第 16.1.6 节,"TLA+ provides the following operators on sets:" 并列出了 \in\subseteq

为什么 TLA+ 不让我使用 \subseteq

虽然这是一个有效的 TLA+ 表达式,但 TLC 只能通过语句 x' = ex' \in S 将下一状态值分配给变量 x。详情请参阅第 14.2.6 节。这也适用于初始分配。在你的情况下,你可能想要 members \in SUBSET People.