0
我試圖在Z3中使用策略求解器來解決與通用求解器相反的一些X約束問題。策略求解器超時的錯誤行爲
我使用以下策略 -
simplify purify-arith elim-term-ite reduce-args propagate-values solve-eqs symmetry-reduce smt sat sat-preprocess
我申請的戰術一個又一個問題通過使用Z3_tactic_and_then
API。 此外,我使用this technique爲了配置解算器的超時。
現在,對於同樣的問題,如果我使用常規解算器,它會超時查詢指定的超時時間。但是,如果我使用提到的解算器的策略,那麼它在給定的時間內不會超時。它運行時間更長。
例如,我指定了一個超時時間180*1000 milliseconds
,但超時時間爲730900毫秒。 我試圖刪除上面提到的一些策略,但行爲仍然是一樣的。
Z3 4.1版
在這種情況下,可能在內部使用'smt'的通用求解器如何正確超時? – Raj 2013-05-08 15:07:05
首先,Z3中的默認求解器實際上是一個投資組合。在很多情況下,它不會使用'smt'(例如:位矢量和非線性實數算術問題)。其次,'smt'支持超時,但它可能不會「尊重它們」。基本上,它會檢查超時事件是否在每個「病例分割」(又名決定)之前簽署。以下是可能卡住的常見位置:比特爆破,單純形,Groebner基礎計算(非線性算術)。還有更多,但這些是最常見的。 – 2013-05-08 15:24:39