に私がZ3/SMTLibのAPIについて質問があります。液体タイプ ツールが必要 キーSMTサブルーチンは、次のクエリです:現在 INPUT: A "background" formula P
, A list of "goal" formulas Qs = [Q1,...,Qn]
OUTPUT: Largest Qs' \subset Qs s.t. forall Q in Qs'
私はZ3の初心者です。最近、いくつかの問題を確認するためにz3を使用しています。ここに私が試した一つの問題である:(X & Y < 0)は含意X/Y> = 0、以下、私が書いたプログラムは、次のとおり (declare-const x Int)
(declare-const y Int)
(define-fun assumption() Bool
(and (< x 0) (< y
多くのプログラミング言語では、分岐効率は、句が提供される順序に依存します。例えば、Pythonで、 if p or q :
はすぐpがtrueと評価されたので、一般的に最初の計算が光句を提供することをお勧めしてif文に分岐します。私はZ3の充足可能性チェックにも同じことが当てはまるのだろうかと思います。言い換えると、And(P, Q)とAnd(Q, P)のチェックの間に違いがありますか?ただし
addition, subtraction and shiftを使用して2つの数を掛けることは可能です。この手順の重要な部分は、このような操作の最小限の(最適な)シーケンスを見つけることです。ブルートフォースを使用してシーケンスを見つけると、指数関数的に成長するので、さまざまな経験則が使用されます。おそらく最もよく知られているのは、Robert Bernsteinの論文Multiplication