z3py

    1

    1答えて

    z3pyの例は動作しません。私はgithub上のREADMEからの指示を使ってうまくインストールできました。私は正常に私のpythonのパスを適切なディレクトリを指すように更新しました。さらに、z3を正常にインポートすることができましたが、変数を宣言するたびにエラーが発生します。コンパイラはInt、Ints、Real、RealValを認識しません。 説明する例を示しました。 コード: from z

    0

    1答えて

    私はbitvecの実際に使用されている長さを計算したいと思います。例えば、我々は00101100のようなbitvecを持っており、次のように実際に使用長さはとにかく、私はz3pyのコードを最も右側の1の位置の点では6を持っている: from z3 import * import math def length(t): return int(math.ceil(math.log(t,2)))

    2

    2答えて

    Z3Pyライブラリ(Z3Pyライブラリを使用しています)を仮定して、エンジンの妥当性をチェックするのではなく、理論を証明するのと同じように、基礎理論と見なす方法がありますか? たとえば、Real型の引数を持つ2つの単項関数があるとします。私はすべての入力値に対してf1(t)がf2(t)に等しいことをZ3エンジンに伝えたいと思います。次のようになりますZ3Pyでエンコード : トン=レアル( "T"

    0

    1答えて

    Z3Pyを使用して、decl_func(fname, arity)という2つの引数をとります:fname、宣言する関数の名前、およびその引数の数arityを返します。 (解釈されていない)Z3の整数を超える。問題は、それが単項またはバイナリの機能のためであるように、関数本体は return Function(fname, IntSort(), IntSort()) 又は return Func

    2

    1答えて

    私はsimilar question for Z3 C++ APIがあることを認識していますが、Z3Pyに対応する情報が見つかりませんでした。私は、インデックスを使用して配列の値にアクセスできるように、Z3で見つかったモデルから配列を取得しようとしています。私は >>> b = Array('b', IntSort(), BitVecSort(8)) >>> s = Solver() >>>

    0

    1答えて

    これは素朴な質問かもしれませんが、なぜ次のことが満足できる一連の前提をもたらさないのでしょうか? 最後の仮定は仮定2と3に直接従いませんか? import z3 # Initialize variables t = z3.Int('t') z = z3.Real("z") y = z3.Real("y") M = z3.Real("M") x = z3.Function("x", z

    -1

    1答えて

    私はZ3ソルバーのコピー機能が大好きな状況に遭遇しています。これは私がソルバをいくつかの制約でインスタンス化したことを意味します。私は今それをコピーして、の2つのソルバーを持っています。現時点では、私は新しいソルバーを作成し、s.assertionsを繰り返して追加することでこれをやっています。小さなソルバーに対してはこれは問題ありません。より大きなソルバの場合、これはZ3がすでに行った作業を再作

    0

    1答えて

    私は奇妙な状況に遭遇しました。ここでは、z3pyは論理的に同じ問題になる2つの別々の答えを出します。 バージョン1: >>> import z3 >>> r, r2, q = z3.Reals('r r2 q') >>> s = z3.Solver() >>> s.add(r > 2, r2 == r, q == r2 ** z3.RealVal(0.5)) >>> s.check()

    2

    1答えて

    Z3で普遍化された変数の値の範囲を束縛することが可能かどうかを知りたいと思います。 たとえば、システムの時間をモデル化するために使用される「time」というタイプの変数があるとします。 私は単項関数 "func1"の値は常に1から100の間でなければならないという主張を持っているとしましょう。関数は入力に時間変数をとります。 Z3で表すと、私は次のようにプロパティをコード化している: ForAll