複数のステートメントを無限に頻繁に実行する必要があるという公平性の制約があるプログラムで、LTL プロパティを検証できるかどうか疑問に思っています。
例えば:
bool no_flip;
bool flag;
active[1] proctype node()
{
do
:: skip -> progress00: no_flip = 1
:: skip -> progress01: flag = 1
:: !no_flip -> flag = 0
od;
}
// eventually we have flag==1 forever
ltl p0 { <> ([] (flag == 1)) }
このプログラムは、最終的にno_flip
フラグが trueに flag
なり、true になった場合に正しいです。
ただし、'pan -a' と 'pan -a -f' (弱い公平性) の両方を実行すると、no_flip=1
ステートメントと受け入れ状態 (LTL 式から) を循環します。
進行状況ラベルは、実行が無限に頻繁に通過することを強制すると思っていましたが、そうではないようです。では、そのような公平性制約を追加することは可能ですか?
ありがとう、ヌーノ