TLC не может справиться с этим соединением спецификации - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть модуль TLA +, который в итоге выглядит следующим образом:

--- MODULE Group ---

CONSTANTS People
VARIABLES members

Join(person) == ...
Leave(person) == ...

Init == members \subseteq People

Next == \E p \in People :
            \/ Join(p)
            \/ Leave(p)

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

Когда я пытаюсь проверить модель с помощью TLC, я получаю следующую ошибку:

TLC выдал неожиданное исключение.Вероятно, это было вызвано ошибкой в ​​спецификации или модели.Посмотрите Пользовательский Выход или Консоль TLC для подсказок к тому, что случилось.Исключением являлось исключение java.lang.RuntimeException: TLC не может обработать этот конъюнкт спецификации: строка X, столбец Y - строка Z, столбец T модуля Group

..., указывающий на весь контентиз Next.

Я считаю, что мой Next написан хорошо, потому что вот пример модели, которая очень похожа Next на мою: https://github.com/tlaplus/Examples/blob/master/specifications/aba-asyn-byz/aba_asyn_byz.tla#L110

Также, раздел14.2.2 из Указывающие системы Лесли Лампорта говорит:

TLC может вычислять выражение со множеством значений только в том случае, если это выражение равно конечному множеству [...].TLC будет оценивать выражения следующих форм, только если он может перечислить набор S :

и предоставит пример "существует x в S такой, что p".

Как я могу решить эту ошибку?

1 Ответ

0 голосов
/ 16 февраля 2019

Проблема заключалась в том, что я использовал \subseteq в Init, как я ответил здесь: \ in works, в то время как \ subseteq выдает ошибку «identifier undefined»

...