私は、用語の書き換えを使用して固定サイズのビットベクトル算術問題を解決/簡素化することに焦点を当てたプロジェクトに取り組んでいます。これは、ビットブラストに基づくものなどの決定手順の前のステップとして役立つものです。書き換えという用語は、問題をまったく解決するか、そうでなければ、はるかに単純な同等の問題を生成する可能性があるため、両方を組み合わせると、かなりの速度向上が得られます。
多くの SMT ソルバーがこの戦略を実装していることは承知しています (Boolector、Beaver、Alt-Ergo、Z3 など)。一般に、著者がそのような単純化の手順をいくつかの段落で説明している論文しか見つけられませんでした。用語の書き換えの使用法を詳細に説明しているドキュメントを見つけたいと思います: ルールの例を提供し、AC 書き換えおよび/または他の等式公理の利便性について議論し、書き換え戦略の使用など.
今のところ、CVC Lite によって実行される正規化/単純化の手順について説明しているテクニカル レポートA Decision Procedure for Fixed-Width Bit-Vectorsを見つけました。このようなテクニカル レポートをもっと見つけたいと思います! STP での用語の書き換えに関するポスターも見つけましたが、これは簡単な要約にすぎません。
私はすでにそれらの SMT ソルバーの Web サイトにアクセスし、それらの出版物ページを検索しました...
よく知られているSMTソルバーの現在のバージョンで用語の書き換えがどのように使用されているかについての参照または説明をいただければ幸いです。Z3 は最もスマートな単純化フェーズの 1 つを備えているように見えるので、特に Z3 に興味があります。たとえば、Z3 3.* では新しいビット ベクトル決定手順が導入されましたが、残念ながら、それについて説明している論文を見つけることができませんでした。