私はSPINとPromelaには新しく、私のモデルではライブネスのプロパティを検証しようとしています。PromelaのSPINがproctypeのエラーに達していません
エラーコード:
unreached in proctype P
(0 of 29 states)
unreached in proctype monitor
mutex_assert.pml:39, state 1, "assert(!((mutex>1)))"
mutex_assert.pml:42, state 2, "-end-"
(2 of 2 states)
unreached in init
(0 of 3 states)
unreached in claim ltl_0
_spin_nvr.tmp:10, state 13, "-end-"
(1 of 13 states)
pan: elapsed time 0 seconds
コードは、基本的にはピーターソンのアルゴリズムの実装であると私は、安全性をチェックし、有効であると思われます。しかし、ltl {[]((wait - > <>(cs)))}}を使用してライブネスプロパティを検証しようとすると、上記のエラーが発生します。私は、彼らが何を意味するかわからないので、私は続行する方法がわからない...
次のように私のコードは次のとおりです。
#define N 3
#define wait (P[1]@WAIT)
#define cs (P[1]@CRITICAL)
int pos[N];
int step[N];
int enter;
byte mutex;
ltl {[]((wait -> <> (cs)))}
proctype P(int i) {
int t;
int k;
WAIT:
for (t : 1 .. (N-1)){
pos[i] = t
step[t] = i
k = 0;
do
:: atomic {(k != i && k < N && (pos[k] < t|| step[t] != i)) -> k++}
:: atomic {k == i -> k++}
:: atomic {k == N -> break}
od;
}
CRITICAL:
atomic {mutex++;
printf("MSC: P(%d) HAS ENTERED THE CRITICAL SECTION.\n", i);
mutex--;}
pos[i] = 0;
}
init {
atomic { run P(0); }
}
ありがとうございました!うん、私はここにそれを掲示する前に私のコードを編集し、それはそれを固定したようだ。しかし、以下のコードはどういう意味ですか?私はそれがエラーの一部であると仮定しましたか? 未解決のクレームltl_0 _spin_nvr.tmp:10、状態13、 "-end-" – firearian
@firearian @あなたの質問に答えるために投稿を更新しました。もう一度、**エラー**がないことを理解してください。 –
ありがとう!それは私の質問に答える!私がすることができれば、小さなフォローアップ。これは、プロセスが "never ltl_0"を入力しないため、ltlプロパティが正常に検証されたことを意味していますか? – firearian