問題タブ [promela]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
verification - Promela - 非決定論ではなく非決定論?
次のスニペットを検討してください。
これは、カウンターが 0 を下回るまで値 0..3 をかなり恣意的に出力し、その時点で別の数値を出力するか終了することを期待するでしょう。
しかし、そうではないようです。
返される値は、0、次に 1、次に 0、次に 1、次に 0、次に 1 だけです。
if/fi ステートメントの「非決定論」を誤解したのでしょうか?
(問題がある場合は、ubuntuでispinを使用してください)。
verification - プロメラモデルで動作しないと主張しない
次の単純な PROMELA モデルを検討してください。
私は、spin -f を使用して生成された次の単純な主張で、このモデルを検証したかったのです。
ただし、これを使用した検証は
結果が出ません。-a オプションを試しても結果は得られません。任意のランダム シミュレーションは、ある時点で明らかに p が false であることを示しています。
基本的な何かが欠けていますか?
if-statement - Promela でのセミコロンの使用法
Spin Modal Checker の promela 構文を学習しています。この単純なコードに遭遇しました。
私が知っているように、セミコロンはステートメントの終わりを定義するために使用されます。andと after;
の両方の最後で使用できますか; プログラムの動作は変わりますか? このセミコロンをクリアしてくれてありがとう。count++
count--
fi
spin - SPIN は現在、制約を表現するための CTL をサポートしていますか?
しばらくグーグルで検索したところ、SPIN の CTL または CTL* モデル チェックを提案している論文がいくつか見つかりました。ただし、Promela のマニュアル ページによると、Promela モデルで CTL を表現する方法はありません。今はちょうど提案レベルですか?
model-checking - Promela - SPIN で LTL を Automato に変換するには?
PROMELA で LTL を Automata に変換するにはどうすればよいですか? コマンド SPIN -f "ltl x" を使用すると、LTL を決してクレームに変換できないことはわかっていますが、否定ではなく LTL のオートマトンが必要です。never クレームを生成する前に LTL を否定すれば正しいです。誰でも私を助けることができますか?
model-checking - Spin で複数 (またはすべて) の違反トレースを求める
Spin を使用してプロパティの複数 (またはすべて) の違反トレースを取得することはできますか?
例として、以下の Promela モデルを作成しました。
単純なミューテックスの実装があります。プロセス A と B が一緒にクリティカル セクションに到達しないことが予想されるので、それをチェックするために LTL 式を書きました。
ランニング
プロパティが有効ではなく、実行中であることを示します
プロパティに違反する一連のステートメントを表示します。
これは、一連のステートメント (ラベルで示される) 'B1' -> 'A1' -> 'B2' -> 'A2' がプロパティに違反していることを示していますが、それにつながる他のインターリーブ オプションがあります (例: 'A1' -> ' B1' -> 'B2' -> 'A2')。
Spin に複数 (またはすべて) のトレースを提供するように依頼できますか?
spin - Promela で配列要素の非決定論的な値を選択することは不可能ですか?
以下は、私が書いている Promela コードです。
しかし、コードをシミュレートしようとすると、次のようなエラー メッセージが表示されます。
見た: '['、予想される ':' スピン: osek_sp2.pml:507、エラー: 予想される選択 (名前: 定数 .. 定数) 近くの '選択'
しかし、構文定義によると、問題は見つかりません。
SYNTAX
select '(' varref ':' expr '..' expr ')'varref : 名前 [ '[' any_expr ']' ] [ '.' varref ]
このエラー メッセージの理由は何ですか?
cygwin - proctype エラーで Promela SPIN に到達できませんでした
私は SPIN と Promela にかなり慣れていないので、モデルの liveness プロパティを検証しようとしているときにこのエラーに遭遇しました。
エラーコード:
コードは基本的にピーターソンのアルゴリズムの実装であり、安全性をチェックしたところ、有効なようです。しかし、ltl {[]((wait -> <> (cs)))} を使用して liveness プロパティを検証しようとすると、上記のエラーが発生します。意味がよくわからないのでどうすればいいのかわかりません...
私のコードは次のとおりです。