量化子推論でSMTソルバーの結果を安定させる方法
A Deeper Look at Depth: Stable Generation Accounting for Quantifier Reasoning
この論文をやさしく読む
ひとことで言うと
SMTソルバーが入力の小さな違いで検証結果を変えてしまう原因を調べ、量化子の処理方法を改良した研究。
何に役立つ?
プログラムの自動検証で、証明の成否が入力の並べ方などに左右されにくいソルバーを設計する際に役立つと考えられる。
この研究の面白いところ
量化子の具体化に用いる深さの計数が合流性を欠くことを原因として示し、抽象モデルからZ3実装まで段階的につなげている。
どこまで分かった?
94%の改善はMariposaベンチマークの『不安定な中核部分』についての結果であり、あらゆる入力での改善率を意味しない。性能低下がないという報告も要旨記載の評価範囲に限られる。
v1のアブストラクトに基づくAI解説。日本語訳とは別に、用途の解釈を含みます。
アブストラクトの日本語訳
SMTソルバーは自動検証を容易にする一方、入力の一見重要でない変更によって、以前はすぐに得られた証明が失敗したり時間切れになったりする不安定さを抱える。本論文はプログラム検証において、結果が充足不能と不明の間で揺れることの一般的な原因を扱う。量化子の具体化を実用的にするため複数の最新SMTソルバーで使われる世代、すなわち深さの計数方法が、合流性を持たず、結果の不安定さにつながることを示す。 この欠点に対処するため、安定した新しい計数方法を開発する。抽象的で合流性のあるソルバーモデルからZ3での実装に至るまでの一連の詳細化によって、新手法を正当化する。経験的評価では、Mariposaベンチマークの不安定な中核部分において、実装が結果の不安定さを94%減らし、性能低下も生じなかった。
v1の要旨から自動生成。本文の精読・人による確認は未実施。
- 初稿
- 2026-09-22(UTC)
- 最新改訂
- 2026-09-22 · v1
- 査読・掲載
- 査読状況未確認
更新履歴
- v1 2026-09-22 この版を読む
取得できた版を表示。版の更新は査読済みを意味しません。過去版の本文差分は未解析です。
原文の要旨
SMT solvers make automated verification convenient. At the same time, solvers suffer from instability, whereby seemingly inconsequential changes to the input may cause a previously quickly produced proof to fail or time out. This paper addresses a common cause of outcome instability (i.e., unsat/unknown fluctuations) in the context of program verification. We demonstrate that the generation (i.e., depth) accounting used to make quantifier instantiation practical and implemented in multiple state-of-the-art SMT solvers is non-confluent (i.e., prone to divergence), and that this leads to instability. We then address this deficiency and develop a new accounting method that is stable. The new method is justified using a sequence of refinements from an abstract, confluent solver model all the way to our implementation in Z3. Our empirical evaluation demonstrates that our implementation reduces outcome instability by 94% in the unstable core of the Mariposa benchmark without leading to performance regressions.
arXiv ID: 2609.26345 / 要約の誤りについて