\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,

Другие вопросы по тегам