Как проверить модель модуля, который зависит от несвязанной переменной?

Я сейчас прохожу через Specifying Systems и немного озадачен тем, как я проверю модель следующего модуля:

---------------------------- MODULE BoundedFIFO ----------------------------
EXTENDS Naturals, Sequences
VARIABLES in, out
CONSTANT Message, N
ASSUME (N \in Nat) /\ (N > 0)

Inner(q) == INSTANCE InnerFIFO

BNext(q) == /\ Inner(q)!Next
            /\ Inner(q)!BufRcv => (Len(q) < N)

Spec == \EE q : Inner(q)!Init /\ [][BNext(q)]_<<in, out, q>>
=============================================================================

Я вижу, что оба Init а также BNext формулы являются операторами, параметризованными q, Как бы я поставил это на модель проверки?

1 ответ

Решение

Вы не можете: \E x : P(x) является неограниченным выражением, которое TLC не может обработать. Многие из спецификаций в Specifying Systems не могут быть смоделированы. Более поздние руководства, такие как TLA+ Hyperbook или Learn TLA +, более осторожны, чтобы поддерживать все их спецификации в модельном состоянии.

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