Z3の数量詞パターン

プラモッド

このかなり単純なZ3クエリを証明しようとして問題が発生しています。

(set-option :smt.auto-config false) ; disable automatic self configuration
(set-option :smt.mbqi false) ; disable model-based quantifier instantiation
(declare-fun sum (Int) Int)
(declare-fun list () (Array Int Int))
(declare-fun i0 () Int)
(declare-fun s0 () Int)
(declare-fun i1 () Int)
(declare-fun s1 () Int)
(assert (forall ((n Int))
  (! (or (not (<= n 0)) (= (sum n) 0)) 
     :pattern ((sum n)))))
(assert (forall ((n Int))
  (! (let ((a1 (= (sum n)
                   (+ (select list (- n 1))
                      (sum (- n 1))))))
       (or (<= n 0) a1))
     :pattern ((sum n)))))
(assert (>= i0 0))
(assert (= s0 (sum i0)))
(assert (= i1 (+ 1 i0)))
(assert (= s1 (+ 1 s0 (select list i0))))
(assert (not (= s1 (sum i1))))

(check-sat)

最後のアサーションはi1の2番目の数量化ステートメントをインスタンス化する必要があり、s0を含むアサーションはi0の数量詞をインスタンス化する必要があるように思われます。これら2つは簡単にUNSATにつながるはずです。

ただし、Z3は不明を返します。何が足りないのですか?

プラモッド

気にしないでください、私のクエリにばかげたエラーがありました。

このコード:

(assert (= s1 (+ 1 s0 (select list i0))))

になるはずだった:

(assert (= s1 (+ s0 (select list i0))))

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

数量詞用のZ3 / c ++ API

分類Dev

Z3のパフォーマンス:多くのアサーションと大規模な接続詞

分類Dev

Z3の排他的データ型

分類Dev

Z3 for Javaのcheck()に関するパフォーマンス

分類Dev

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

分類Dev

z3ランタイム:定数を直接呼び出すVSパラメーターとして渡す

分類Dev

貪欲な数量詞を使用したJavaパターンの正規表現の減算

分類Dev

英数字パターンを数量詞と照合するための正規表現

分類Dev

z3のPrimeImplicant

分類Dev

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

分類Dev

Haskellのz3パッケージをOSXにインストールできません

分類Dev

SMTLIB / z3 / stp:アンダースコアの意味?

分類Dev

Z3のインクリメンタル入力およびアサーションセット

分類Dev

指数のZ3サポート

分類Dev

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

分類Dev

Linux用のC ++インターフェイスでz3:timeoutを正しく使用していますか?

分類Dev

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

分類Dev

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

分類Dev

opamを使用したZ3用のocamlAPIのインストール

分類Dev

コンストラクター内とコンストラクター外のforall数量詞の違い

分類Dev

Z3での結果

分類Dev

関数がパラメーター(Z3、Python)に基づいて不正な値を返す

分類Dev

繰り返しシーケンスの正規表現数量詞

分類Dev

ホーン節Z3ドキュメント

分類Dev

Z3はインクリメンタルモードでpop()の後に見出語を破棄しますか?

分類Dev

ocamlのZ3バインディング

分類Dev

Z3での最適化:イプシロンの削除

分類Dev

Z3での参照カウントの維持

Related 関連記事

  1. 1

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

  2. 2

    数量詞用のZ3 / c ++ API

  3. 3

    Z3のパフォーマンス:多くのアサーションと大規模な接続詞

  4. 4

    Z3の排他的データ型

  5. 5

    Z3 for Javaのcheck()に関するパフォーマンス

  6. 6

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

  7. 7

    z3ランタイム:定数を直接呼び出すVSパラメーターとして渡す

  8. 8

    貪欲な数量詞を使用したJavaパターンの正規表現の減算

  9. 9

    英数字パターンを数量詞と照合するための正規表現

  10. 10

    z3のPrimeImplicant

  11. 11

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

  12. 12

    Haskellのz3パッケージをOSXにインストールできません

  13. 13

    SMTLIB / z3 / stp:アンダースコアの意味?

  14. 14

    Z3のインクリメンタル入力およびアサーションセット

  15. 15

    指数のZ3サポート

  16. 16

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

  17. 17

    Linux用のC ++インターフェイスでz3:timeoutを正しく使用していますか?

  18. 18

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

  19. 19

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

  20. 20

    opamを使用したZ3用のocamlAPIのインストール

  21. 21

    コンストラクター内とコンストラクター外のforall数量詞の違い

  22. 22

    Z3での結果

  23. 23

    関数がパラメーター(Z3、Python)に基づいて不正な値を返す

  24. 24

    繰り返しシーケンスの正規表現数量詞

  25. 25

    ホーン節Z3ドキュメント

  26. 26

    Z3はインクリメンタルモードでpop()の後に見出語を破棄しますか?

  27. 27

    ocamlのZ3バインディング

  28. 28

    Z3での最適化:イプシロンの削除

  29. 29

    Z3での参照カウントの維持

ホットタグ

アーカイブ