mirror of
https://github.com/Z3Prover/z3
synced 2025-08-24 12:07:52 +00:00
add clausal lookahead to arithmetic solver as part of portfolio
have legacy qfbv-sls solver use nnf pre-processing. It relies on it for correctness of the score updates.
This commit is contained in:
parent
a941f5ae84
commit
22e4054674
13 changed files with 678 additions and 92 deletions
|
@ -67,10 +67,14 @@ namespace sls {
|
|||
return r;
|
||||
}
|
||||
|
||||
void on_model(model_ref& mdl) override {
|
||||
void on_model(model_ref& mdl) override {
|
||||
m_model = mdl;
|
||||
}
|
||||
|
||||
bool is_external(sat::bool_var v) override {
|
||||
return m_context.is_external(v);
|
||||
}
|
||||
|
||||
void register_atom(sat::bool_var v, expr* e) {
|
||||
m_context.register_atom(v, e);
|
||||
}
|
||||
|
@ -85,15 +89,19 @@ namespace sls {
|
|||
sat::clause_info const& get_clause(unsigned idx) const override { return m_ddfw.get_clause_info(idx); }
|
||||
ptr_iterator<unsigned> get_use_list(sat::literal lit) override { return m_ddfw.use_list(lit); }
|
||||
void flip(sat::bool_var v) override { if (m_dirty) m_ddfw.reinit(), m_dirty = false; m_ddfw.flip(v); }
|
||||
sat::bool_var bool_flip() override { if (m_dirty) m_ddfw.reinit(), m_dirty = false; return m_ddfw.bool_flip(); }
|
||||
bool try_rotate(sat::bool_var v, sat::bool_var_set& rotated, unsigned& budget) override { if (m_dirty) m_ddfw.reinit(), m_dirty = false; return m_ddfw.try_rotate(v, rotated, budget); }
|
||||
double reward(sat::bool_var v) override { return m_ddfw.reward(v); }
|
||||
double get_weigth(unsigned clause_idx) override { return m_ddfw.get_clause_info(clause_idx).m_weight; }
|
||||
bool is_true(sat::literal lit) override { return m_ddfw.get_value(lit.var()) != lit.sign(); }
|
||||
unsigned num_vars() const override { return m_ddfw.num_vars(); }
|
||||
indexed_uint_set const& unsat() const override { return m_ddfw.unsat_set(); }
|
||||
indexed_uint_set const& unsat_vars() const override { return m_ddfw.unsat_vars(); }
|
||||
unsigned num_external_in_unsat_vars() const override { return m_ddfw.num_external_in_unsat_vars(); }
|
||||
sat::bool_var add_var() override { m_dirty = true; return m_ddfw.add_var(); }
|
||||
void add_input_assertion(expr* f) { m_context.add_input_assertion(f); }
|
||||
reslimit& rlimit() { return m_ddfw.rlimit(); }
|
||||
void shift_weights() override { m_ddfw.shift_weights(); }
|
||||
|
||||
void force_restart() override { m_ddfw.force_restart(); }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue