\in работает, в то время как \subseteq выдает ошибку "идентификатор не определен"
У меня есть следующие спецификации:
------------------------------ 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
быть коллекцией людей, а не одного человека.
В соответствии с разделом 16.1.6 "Уточняющих систем Лесли Лампорта", "TLA+ предоставляет следующие операторы на наборах:" и перечисляет оба \in
а также \subseteq
,
Почему TLA + не позволяет мне использовать \subseteq
?
1 ответ
Хотя это допустимое выражение TLA+, TLC может присваивать переменной только значения следующего состояния. x
по заявлениям x' = e
или же x' \in S
, Смотрите раздел 14.2.6 для деталей. Это относится и к первоначальному назначению. В вашем случае, вы, вероятно, хотите members \in SUBSET People
,