mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
integrate v2 of lns
This commit is contained in:
parent
dfb7c87448
commit
0ec567fe15
18 changed files with 254 additions and 105 deletions
|
@ -1914,7 +1914,8 @@ namespace sat {
|
|||
m_next_simplify = m_config.m_simplify_delay;
|
||||
m_min_d_tk = 1.0;
|
||||
m_search_lvl = 0;
|
||||
m_conflicts_since_gc = 0;
|
||||
if (m_learned.size() <= 2*m_clauses.size())
|
||||
m_conflicts_since_gc = 0;
|
||||
m_restart_next_out = 0;
|
||||
m_asymm_branch.init_search();
|
||||
m_stopwatch.reset();
|
||||
|
@ -3784,6 +3785,14 @@ namespace sat {
|
|||
}
|
||||
}
|
||||
|
||||
void solver::move_to_front(bool_var b) {
|
||||
if (b >= num_vars())
|
||||
return;
|
||||
bool_var next = m_case_split_queue.min_var();
|
||||
auto next_act = m_activity[next];
|
||||
set_activity(b, next_act + 1);
|
||||
}
|
||||
|
||||
// -----------------------
|
||||
//
|
||||
// Iterators
|
||||
|
|
|
@ -352,8 +352,9 @@ namespace sat {
|
|||
bool was_eliminated(bool_var v) const { return m_eliminated[v]; }
|
||||
void set_eliminated(bool_var v, bool f) override;
|
||||
bool was_eliminated(literal l) const { return was_eliminated(l.var()); }
|
||||
void set_phase(literal l) override { m_best_phase[l.var()] = m_phase[l.var()] = !l.sign(); }
|
||||
void set_phase(bool_var b, bool sign) { set_phase(literal(b, sign)); }
|
||||
void set_phase(literal l) override { if (l.var() < num_vars()) m_best_phase[l.var()] = m_phase[l.var()] = !l.sign(); }
|
||||
bool_var get_phase(bool_var b) { return m_phase.get(b, false); }
|
||||
void move_to_front(bool_var b);
|
||||
unsigned scope_lvl() const { return m_scope_lvl; }
|
||||
unsigned search_lvl() const { return m_search_lvl; }
|
||||
bool at_search_lvl() const { return m_scope_lvl == m_search_lvl; }
|
||||
|
|
|
@ -298,7 +298,27 @@ public:
|
|||
bool is_not = m.is_not(e, e);
|
||||
sat::bool_var b = m_map.to_bool_var(e);
|
||||
if (b != sat::null_bool_var)
|
||||
m_solver.set_phase(b, is_not);
|
||||
m_solver.set_phase(sat::literal(b, is_not));
|
||||
}
|
||||
|
||||
class sat_phase : public phase, public sat::literal_vector {};
|
||||
|
||||
phase* get_phase() override {
|
||||
sat_phase* p = alloc(sat_phase);
|
||||
for (unsigned v = m_solver.num_vars(); v-- > 0; ) {
|
||||
p->push_back(sat::literal(v, !m_solver.get_phase(v)));
|
||||
}
|
||||
return p;
|
||||
}
|
||||
void set_phase(phase* p) override {
|
||||
for (auto lit : *static_cast<sat_phase*>(p))
|
||||
m_solver.set_phase(lit);
|
||||
}
|
||||
void move_to_front(expr* e) override {
|
||||
bool is_not = m.is_not(e, e);
|
||||
sat::bool_var b = m_map.to_bool_var(e);
|
||||
if (b != sat::null_bool_var)
|
||||
m_solver.move_to_front(b);
|
||||
}
|
||||
|
||||
unsigned get_scope_level() const override {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue