問題タブ [smt]
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.
z3 - ビットベクトルに対する量化記号消去法は、非常に複雑な結果を生成します
Z3のELIM_QUANTIFIERS機能を使用して、ビットベクトル上の数式から量指定子を削除しています。Z3が正しいが非常に複雑な結果を生成する次の状況に遭遇しました。問題を書き直す方法があるのか、それとも期待する単純な結果につながる構成オプションがあるのか疑問に思いました。
まず、期待どおりに機能する例を次に示します。長さ4のビットベクトルには、それに等しいビットベクトルが存在すると記載されています。
Z3は、この例に対して次の出力を生成します。
ただし、否定を追加すると、次のようになります。
次に、Z3は次の出力を生成します。これは、単に「true」を返すのではなく、ベクトルのすべての可能な値をリストします。
サイズが32以上の長いビットベクトルの場合、Z3はおそらく32ビット変数のすべての可能な値を列挙しているため、妥当な時間内に結果を生成しません。
この特定のケースでは、check-satを使用して数式の有効性をチェックできることに注意してください。ただし、一般的なケースでは、有効性を確認するだけでなく、元の式と同等の数量詞のない式を取得することに関心があります。
Linux用のZ3v3.2を使用しています。
z3 - 中間の`(check-sat)`呼び出しにコメントを付けると、クエリ結果が変わるのはなぜですか?
UNSATクエリのデバッグ中に、クエリステータスに興味深い違いがあることに気付きました。クエリ構造は次のとおりです。
pop
クエリに呼び出しはありません。この動作をトリガーするクエリはここにあります。
なぜアイデア?
注:実際には増分は必要ありません。デバッグのみを目的としています。Z3バージョンは3.2です。
z3 - Microsoft Z3:式を特定の変数に変換する
私は動的観測のいくつかの簡単な分析にMicrosoftのZ3を使用しています。この一環として、ある数式をある変数のセットを使用してから別のターゲットの変数のセットに変換できれば便利です。
私はZ3を初めて使用しますが、内部の簡略化ルールや数式を変換する他の手段があることを知っています...基本的に、次のような変換を実行できるかどうか疑問に思っています。
これがZ3の主な目標ではないことは認識していますが、すでに簡略化/解決できる機能があることはわかっていました...ヘルプテキストから判断すると、目標の状態と戦術を設計する方法があるという印象を受けました。それらに到達しましたが、Z3のコマンドに基づいてそれを行う方法についての情報を実際に見つけることができませんでした(help)
(何かが足りない場合を除いて...)。
私は実際には複雑なことをするつもりはありません-ターゲットセットにないシンボルの単純な置換/削除...これを行うためにツールを誘導する方法があるのだろうか?
z3 - z3 のシンボリック変数
z3ソルバーに「シンボリック」ソリューションを発行させる方法はありますか? たとえば、方程式の場合:
1+x=c
解は x=c-1 ですが、z3 は常に のような特定のモデルを出力し[c = 0, x = -1]
ます。cをシンボリック変数として「定義」する方法は?
python - z3(py)smt-lib2出力
z3pyで作成されたアサーションをSMT-LIB2形式で出力するにはどうすればよいですか?ドキュメントにそのことについての言及が見つかりません。旗を見つけましたZ3_PRINT_SMTLIB_FULL
が、設定方法がわかりません。
python - Z3Pyをローカルで使用する
IDLEGUIを介してWindowsXPでPython2.7.3を使用しており、PythonAPIを介してローカルでZ34.0を実行しようとしています。
この行は正常に機能します:
この行はしません:
誰もが問題が何であるか知っていますか?
私のPYTHONPATHは、引用符なしで「C:\ Program Files \ Microsoft Research \ Z3-4.0\python」に設定されています。
z3 - SMTソルバーの制約強化の効率
最適化問題を解決する1つの方法は、SMTソルバーを使用して(悪い)ソリューションが存在するかどうかを確認し、提案が満足できなくなるまで、より厳しいコスト制約を段階的に追加することです。このアプローチについては、たとえば、http: //www.lsi.upc.edu/~oliveras/espai/papers/sat06.pdfおよびhttp://isi.uni-bremen.de/agra/doc/konf/で説明されています。 08_isvlsi_optprob.pdf。
しかし、このアプローチは効率的ですか?つまり、ソルバーは、追加の制約を使用して解決しようとしたときに、以前のソリューションからの情報を再利用しますか?
verification - SMTソルバーの制限
従来、計算ロジックでのほとんどの作業は、SAT(充足可能性)ソルバーを使用する命題論理、または1次定理証明器を使用する1次のいずれかでした。
近年、基本的に命題論理を算術などの理論で補強するSMT(満足度モジュロ理論)ソルバーで多くの進歩が見られました。SRIInternationalのJohnRushbyは、彼らを破壊的技術と呼んでいます。
一階述語論理で処理できるが、SMTでは処理できない問題の最も重要な実際的な例は何ですか?特に、ソフトウェア検証の領域でSMTが処理できない問題はどのようなものでしょうか。
z3 - 数式を選言標準形に変換する方法は?
与えられた式を言う
(t1>=2 または t2>=3) および (t3>=1)
その選言正規形 (t1>=2 および t3>=1) または (t2>=3 および t3>=1) を取得したい
Z3でこれを達成する方法は?
z3 - Z3で変数を非表示にする方法
私が持っていると言う
t1<t2
Z3のように変数xを非表示にすることは可能
ですか?