Q1: Z3 がさまざまなサブソルバーで費やした時間を照会することは可能ですか?
呼び出し(get-info :all-statistics)により、Z3 の全体的な実行時間が得られますが、個々のサブソルバーに分解したいと思います。
特に、算術関連のサブソルバーに費やされた時間、より正確には、統計grobnerとnonlinear-horner.
Q2:また、サブソルバーにタイムアウトを付けることは可能ですか?
チェックサットとサブソルバーごとにタイムアウトを定義して、Z3 がそのサブソルバーで費やすことができる時間を制限するようなものを想像できます。Z3 はn 個の異なるサブソルバーを繰り返し呼び出し、そのうちの 1 つの時間制限に達した場合は続行しますが、残りのn-1サブソルバーのみを使用します。
戦術のチュートリアルを読んで、これは実際には次のような方法で可能であるという印象を受けました。
(repeat
(par-or
(try-for <arithmetic-solvers> 500)
<all-other-solvers>))
しかし、どのソルバーを使用すればよいかわかりませんでした。