This PR achieves a speed up in bv_decide's LRAT checker by improving its input validation. When the LRAT checker works on a clause it needs to know that the clause has no duplicate literals and is not tautological (i.e. doesn't contain the same variable in different polarities). Previously this was done using a naive quadratic algorithm, now we check the property using a HashMap in linear time. Beyond this there is also a few micro optimizations. Together they improve the runtime on the SMTLIB problem `non-incremental/QF_BV/20210312-Bouvier/vlsat3_a15.smt2` from `1:25.31` to `1:01.32` minutes (where 39 seconds of this run time are the SAT solver and thus completely unaffected by the optimization) Co-authored-by: @JOSHCLUNE --------- Co-authored-by: JOSHCLUNE <josh.seth.clune@gmail.com> |
||
|---|---|---|
| .. | ||
| BVDecide | ||
| BVDecide.lean | ||