\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' = e
或 x' \in S
将下一状态值分配给变量 x
。详情请参阅第 14.2.6 节。这也适用于初始分配。在你的情况下,你可能想要 members \in SUBSET People
.
我有以下规格:
------------------------------ 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' = e
或 x' \in S
将下一状态值分配给变量 x
。详情请参阅第 14.2.6 节。这也适用于初始分配。在你的情况下,你可能想要 members \in SUBSET People
.