Z3の排他的データ型

paubo147

私はCの共用体のようなsmtlibで何かを実現しようとしました:

union IntBoolType
{
    int i;
    boolean b;
} x;

これまでの私の成果:

(declare-datatypes (Int) ((IntPart INone (part (i Int)))))
(declare-datatypes (Bool) ((BoolPart BNone (part (b Bool)))))

(declare-datatypes () ((IntBoolType (mk (ipart (IntPart Int)) 
                                        (bpart (BoolPart Bool))))))

アイデアは、IntBoolTypeintまたは(xor)ブール値のいずれかを含む必要があるということです。「なし」を示すために、サブデータ型に2つのフィールドを導入しました。タイプIntBoolTypeibt1to ibt10)の定数をいくつか宣言しましたが、これらの要件をサポートするためにアサーションを定義したいと思いました。

(assert (distinct ibt1 ibt2 ibt3 ... ibt10)
(assert (xor (= (ipart ibt1) INone) (= (bpart ibt1) BNone)))

2番目のアサーションが必要です。そうしないと、INoneとで1つの解決策が得られたからBNoneです。ただし、z3は、整数値とブール値の両方を含む出力を出力するようになりました。私は何か見落としてますか?この問題をエンコードするためのよりスマートな方法はありますか?

ティム

少しバックアップして、作成した対応するMLタイプを検討してください。

type intpart = int option
type boolpart = bool option
type intbooltype = Mk of intpart * boolpart

それは常にオプションのペアです。私はあなたが望んでいたのはどちらかだと思います:

type ('a,'b) either = Left of 'a | Right of 'b

CVC4およびz3がサポートするデータ型拡張でこれを記述する方法は次のとおりです。

(declare-datatypes (U T) ((Either (Left (left U))
                                  (Right (right T)))))

(これはCユニオンと同じではありませんが、別の話です。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

z3の排他的データ型(フォローアップ)

分類Dev

Z3のレコードデータ型のすべての可能な値?

分類Dev

数量詞なしのz3データ型マッチング

分類Dev

Z3またはSMT(v2.6)の一般的なデータ型のモデリング

分類Dev

Z3の数量詞パターン

分類Dev

z3のPrimeImplicant

分類Dev

Z3 の不可思議な「ネストされたデータ型式の無効化」

分類Dev

指数のZ3サポート

分類Dev

Rails 3のデータ型?

分類Dev

相互に排他的なデータ属性セレクター

分類Dev

3つの相互に排他的なClangサニタイザーのどれをデフォルトにする必要がありますか?

分類Dev

Z3での結果

分類Dev

レコードタイプの複数の配列の場合、配列モデルのZ3追加条件(ite句)

分類Dev

Excel VBA:データを別のシートの排他的な範囲にプッシュする方法は?

分類Dev

Excel VBA:データを別のシートの排他的な範囲にプッシュする方法は?

分類Dev

パンダのデータフレームを相互に排他的なサブセットに分割します

分類Dev

Rデータフレームで相互に排他的な2つの列を組み合わせる

分類Dev

Stataの複数の観測(パネルデータ)における相互排他性

分類Dev

正しいDafnyメソッドのZ3モデル

分類Dev

ocamlのZ3バインディング

分類Dev

C#APIで列挙型Z3定数の問題を作成する

分類Dev

コンマ行を使用してZ3でデータログを実行する方法

分類Dev

辞書内の他のデータ型のブールキー

分類Dev

Z3ソルバーJava API:RealExprのModulo操作の実装

分類Dev

Z3でのランダムシードの使用

分類Dev

別のデータフレームとの(排他的な)部分一致に基づいてデータフレームから行を削除する

分類Dev

PySparkデータフレームから「排他的行」を選択する

分類Dev

Rデータフレームで排他カウントを取得する方法

分類Dev

OCamlバインディングを使用したZ3のインストール

Related 関連記事

  1. 1

    z3の排他的データ型(フォローアップ)

  2. 2

    Z3のレコードデータ型のすべての可能な値?

  3. 3

    数量詞なしのz3データ型マッチング

  4. 4

    Z3またはSMT(v2.6)の一般的なデータ型のモデリング

  5. 5

    Z3の数量詞パターン

  6. 6

    z3のPrimeImplicant

  7. 7

    Z3 の不可思議な「ネストされたデータ型式の無効化」

  8. 8

    指数のZ3サポート

  9. 9

    Rails 3のデータ型?

  10. 10

    相互に排他的なデータ属性セレクター

  11. 11

    3つの相互に排他的なClangサニタイザーのどれをデフォルトにする必要がありますか?

  12. 12

    Z3での結果

  13. 13

    レコードタイプの複数の配列の場合、配列モデルのZ3追加条件(ite句)

  14. 14

    Excel VBA:データを別のシートの排他的な範囲にプッシュする方法は?

  15. 15

    Excel VBA:データを別のシートの排他的な範囲にプッシュする方法は?

  16. 16

    パンダのデータフレームを相互に排他的なサブセットに分割します

  17. 17

    Rデータフレームで相互に排他的な2つの列を組み合わせる

  18. 18

    Stataの複数の観測(パネルデータ)における相互排他性

  19. 19

    正しいDafnyメソッドのZ3モデル

  20. 20

    ocamlのZ3バインディング

  21. 21

    C#APIで列挙型Z3定数の問題を作成する

  22. 22

    コンマ行を使用してZ3でデータログを実行する方法

  23. 23

    辞書内の他のデータ型のブールキー

  24. 24

    Z3ソルバーJava API:RealExprのModulo操作の実装

  25. 25

    Z3でのランダムシードの使用

  26. 26

    別のデータフレームとの(排他的な)部分一致に基づいてデータフレームから行を削除する

  27. 27

    PySparkデータフレームから「排他的行」を選択する

  28. 28

    Rデータフレームで排他カウントを取得する方法

  29. 29

    OCamlバインディングを使用したZ3のインストール

ホットタグ

アーカイブ