2

在我的规范中,我试图检查序列中的变化是 -1、0 还是 1。

我将这个不变量描述如下:


PVariance == Len(waitingRoomP') - Len(waitingRoomP) \in {-1,0,1}
CVariance == Len(waitingRoomC') - Len(waitingRoomC) \in {-1,0,1}

Invariants ==
    /\ TypeInv
    /\ \/ PVariance 
       \/ CVariance

TLC 模型检查器输出以下内容:

The invariant Invariants is not a state predicate (one with no primes or temporal operators).
Note that a bug can cause TLC to incorrectly report this error.
If you believe your TLA+ or PlusCal specification to be correct,
please check if this bug described in LevelNode.java starting at line 590ff affects you.
4

1 回答 1

3

waitingRoomP'waitingRoomP下一个状态的值,意思PVariance是现在的一个动作。不变量不能是动作,它们只能是“纯”运算符。

您可以改为PVariance通过编写[][PVariance]_waitingRoomP. 这需要作为工具箱中的时间属性进行检查,而不是不变量。

于 2021-03-03T20:23:23.683 回答