Tla+ \在works中,而\subsetq给出了一个;“标识符未定义”;错误
我有以下规格:Tla+ \在works中,而\subsetq给出了一个;“标识符未定义”;错误,tla+,tlc,Tla+,Tlc,我有以下规格: ------------------------------ MODULE Group ------------------------------ CONSTANTS People VARIABLES members Init == members \subseteq People Next == members' = members Group == Init /\ [][Next]_members ==================================
------------------------------ MODULE Group ------------------------------
CONSTANTS People
VARIABLES members
Init == members \subseteq People
Next == members' = members
Group == Init /\ [][Next]_members
=============================================================================
(我简化了这个规范,使它没有任何用处。)
当我尝试通过TLC运行它时,我得到以下错误:
在求值过程中,标识符成员要么未定义,要么不是运算符
错误指向Init
行
当我将Init
行更改为:
Init == members \in People
这很好
我想要前面的功能,因为我的意思是成员
是一群人,而不是一个人
根据第16.1.6节,“TLA+在集合上提供以下运算符:”并列出\in
和\subsetq
为什么TLA+不允许我使用
\subsetq
?虽然这是一个有效的TLA+表达式,但TLC只能通过S中的语句x'=e
或x'\将下一状态值分配给变量x
。详见第14.2.6节。这也适用于初始分配。在您的情况下,您可能希望将成员\包含在人员子集中