ユーザー定義のz3ソートに関する問題

OrenIshShalom

z3がどのように機能するかをよりよく理解するために、z3で新しい分数ソートを定義しようとしています。私はこのクエリを使用して、2つの分数の間の同等性を定義しています。

;;;;;;;;;;;;;;;;;;;
;; TEMPLATE CTOR ;;
;;;;;;;;;;;;;;;;;;;
(declare-datatypes (T1 T2) ((Pair (mk-pair (first T1) (second T2)))))

;;;;;;;;;;;;;;;;;;;;;;
;; SORT DEFINITIONS ;;
;;;;;;;;;;;;;;;;;;;;;;
(define-sort Fraction () (Pair Int Int))

;;;;;;;;;;;;;;;;;;;;;;;;;;
;; FUNCTION DEFINITIONS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-fun Fraction_Eq ((f1 Fraction) (f2 Fraction)) Bool
    (if (= (* (first f1) (second f2))
           (* (first f2) (second f1)))
        true
        false
    )
)

(declare-const x1 Fraction)
(declare-const x2 Fraction)
(declare-const x3 Fraction)

(assert (Fraction_Eq x1 (mk-pair 3 5)))
(assert (Fraction_Eq x2 (mk-pair 4 7)))
(assert (Fraction_Eq x3 (mk-pair 8 9)))

(check-sat)
(get-value (x1 x2 x3))

x1は3/5に等しいと思いますが、そうではありません。これが私が得る答えです:

sat
((x1 (mk-pair 0 0))
 (x2 (mk-pair 1304 2282))
 (x3 (mk-pair 0 0)))

誰か助けてもらえますか?ありがとう!

パトリック・トレンティン

方程式

 n * 5 = d * 3

によって完全に満足していn = d = 0ます。

ゼロによる除算は通常の算術では意味がないため、ステートメントを充実させ、とはd異なる必要あります0

その方程式には無限の数の解があるn, dため3, 5これはに等しいことを保証しないこと注意してくださいただし、正規化された値はx1に対応する必要があり3/5ます。

これを修正する方法は次のとおりです。

;;;;;;;;;;;;;;;;;;;
;; TEMPLATE CTOR ;;
;;;;;;;;;;;;;;;;;;;
(declare-datatypes (T1 T2) ((Pair (mk-pair (first T1) (second T2)))))

;;;;;;;;;;;;;;;;;;;;;;
;; SORT DEFINITIONS ;;
;;;;;;;;;;;;;;;;;;;;;;
(define-sort Fraction () (Pair Int Int))

;;;;;;;;;;;;;;;;;;;;;;;;;;
;; FUNCTION DEFINITIONS ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-fun Fraction_Eq ((f1 Fraction) (f2 Fraction)) Bool
    (if (= (* (first f1) (second f2))
           (* (first f2) (second f1)))
        true
        false
    )
)

(define-fun Fraction_Valid ((f1 Fraction)) Bool
    (not (= 0 (second f1)))
)

(declare-const x1 Fraction)
(declare-const x2 Fraction)
(declare-const x3 Fraction)

(assert (Fraction_Valid x1))
(assert (Fraction_Valid x2))
(assert (Fraction_Valid x3))

(assert (Fraction_Eq x1 (mk-pair 3 5)))
(assert (Fraction_Eq x2 (mk-pair 4 7)))
(assert (Fraction_Eq x3 (mk-pair 8 9)))

(check-sat)
(get-value (x1 x2 x3))

結果:

sat
((x1 (mk-pair 3 5))
 (x2 (mk-pair 4 7))
 (x3 (mk-pair (- 8) (- 9))))

新しく導入されたFraction_Valid SmtLibv2述語は、それが適用される分数がゼロに等しい分母を持つことを防ぐ必要があります。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Kafka Streamer: ユーザー定義の「Serdes」に関する問題

分類Dev

ユーザー定義関数のソート列の問題

分類Dev

変数定義に関するユーザー入力の問題を伴うajaxリクエスト

分類Dev

Z3ソルバーでのMAxSMTとユーザー定義のコスト関数の組み合わせ

分類Dev

Z3 forJavaに関するパフォーマンスの問題

分類Dev

ユーザー定義関数による配列のソート

分類Dev

SQLServerのユーザー定義関数の問題

分類Dev

ユーザー定義メソッドjavaの問題

分類Dev

Rユーザー定義関数の変数名を渡す際の問題

分類Dev

ユーザー定義のソート関数、それらを適切に使用する方法は?

分類Dev

ユーザー定義のソート関数、それらを適切に使用する方法は?

分類Dev

ストア値の設定に関するSvelteユーザー登録の問題

分類Dev

urllibのユーザーエージェントに関する問題

分類Dev

ActiveDirectoryユーザーの操作に関するC#の問題

分類Dev

次のユーザーに関するacts_as_followerの問題

分類Dev

ユーザー入力のJava検証に関する問題

分類Dev

Keycloak-ユーザーとLDAPの同期に関する問題

分類Dev

ユーザーの削除に関する問題

分類Dev

ユーザーの削除に関する問題

分類Dev

Sonar 6.2 でのユーザー認証に関する問題

分類Dev

管理者ユーザーの作成に関する問題

分類Dev

ユーザーの削除に関する問題

分類Dev

ユーザーのリダイレクトに関する奇妙な問題

分類Dev

モジュールから__init__。pyにインポートするときにユーザー定義の例外をテストする問題

分類Dev

スクリプトでユーザー定義変数を使用する際の問題

分類Dev

ユーザー定義の文字列置換関数をtibbleのコンテンツに適用する際の問題

分類Dev

グローバル変数の定義に関する問題

分類Dev

オブジェクト内でユーザー定義パラメーターを渡すのに問題がある

分類Dev

カークマンの女子高生問題を解決するためにz3ソルバーを使用する方法は?

Related 関連記事

  1. 1

    Kafka Streamer: ユーザー定義の「Serdes」に関する問題

  2. 2

    ユーザー定義関数のソート列の問題

  3. 3

    変数定義に関するユーザー入力の問題を伴うajaxリクエスト

  4. 4

    Z3ソルバーでのMAxSMTとユーザー定義のコスト関数の組み合わせ

  5. 5

    Z3 forJavaに関するパフォーマンスの問題

  6. 6

    ユーザー定義関数による配列のソート

  7. 7

    SQLServerのユーザー定義関数の問題

  8. 8

    ユーザー定義メソッドjavaの問題

  9. 9

    Rユーザー定義関数の変数名を渡す際の問題

  10. 10

    ユーザー定義のソート関数、それらを適切に使用する方法は?

  11. 11

    ユーザー定義のソート関数、それらを適切に使用する方法は?

  12. 12

    ストア値の設定に関するSvelteユーザー登録の問題

  13. 13

    urllibのユーザーエージェントに関する問題

  14. 14

    ActiveDirectoryユーザーの操作に関するC#の問題

  15. 15

    次のユーザーに関するacts_as_followerの問題

  16. 16

    ユーザー入力のJava検証に関する問題

  17. 17

    Keycloak-ユーザーとLDAPの同期に関する問題

  18. 18

    ユーザーの削除に関する問題

  19. 19

    ユーザーの削除に関する問題

  20. 20

    Sonar 6.2 でのユーザー認証に関する問題

  21. 21

    管理者ユーザーの作成に関する問題

  22. 22

    ユーザーの削除に関する問題

  23. 23

    ユーザーのリダイレクトに関する奇妙な問題

  24. 24

    モジュールから__init__。pyにインポートするときにユーザー定義の例外をテストする問題

  25. 25

    スクリプトでユーザー定義変数を使用する際の問題

  26. 26

    ユーザー定義の文字列置換関数をtibbleのコンテンツに適用する際の問題

  27. 27

    グローバル変数の定義に関する問題

  28. 28

    オブジェクト内でユーザー定義パラメーターを渡すのに問題がある

  29. 29

    カークマンの女子高生問題を解決するためにz3ソルバーを使用する方法は?

ホットタグ

アーカイブ