mirror of
https://github.com/Z3Prover/z3
synced 2025-04-08 10:25:18 +00:00
create insert-fresh and insert for indexed_uint_set to make use cases with non-fresh inserts easier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
0478ab1498
commit
7b36563196
|
@ -317,7 +317,7 @@ namespace sat {
|
|||
// cls becomes false: flip any variable in clause to receive reward w
|
||||
switch (ci.m_num_trues) {
|
||||
case 0: {
|
||||
m_unsat.insert(cls_idx);
|
||||
m_unsat.insert_fresh(cls_idx);
|
||||
clause const& c = get_clause(cls_idx);
|
||||
for (literal l : c) {
|
||||
inc_reward(l, w);
|
||||
|
@ -406,7 +406,7 @@ namespace sat {
|
|||
inc_reward(lit, ci.m_weight);
|
||||
inc_make(lit);
|
||||
}
|
||||
m_unsat.insert(i);
|
||||
m_unsat.insert_fresh(i);
|
||||
break;
|
||||
case 1:
|
||||
dec_reward(to_literal(ci.m_trues), ci.m_weight);
|
||||
|
|
|
@ -178,7 +178,7 @@ namespace sat {
|
|||
|
||||
inline void inc_make(literal lit) {
|
||||
bool_var v = lit.var();
|
||||
if (make_count(v)++ == 0) m_unsat_vars.insert(v);
|
||||
if (make_count(v)++ == 0) m_unsat_vars.insert_fresh(v);
|
||||
}
|
||||
|
||||
inline void dec_make(literal lit) {
|
||||
|
|
|
@ -990,7 +990,7 @@ namespace sat {
|
|||
m_rating.push_back(0);
|
||||
m_vprefix.push_back(prefix());
|
||||
if (!m_s.was_eliminated(v))
|
||||
m_freevars.insert(v);
|
||||
m_freevars.insert_fresh(v);
|
||||
}
|
||||
|
||||
void lookahead::init(bool learned) {
|
||||
|
@ -1096,7 +1096,7 @@ namespace sat {
|
|||
literal l = m_trail[i];
|
||||
set_undef(l);
|
||||
TRACE("sat", tout << "inserting free var v" << l.var() << "\n";);
|
||||
m_freevars.insert(l.var());
|
||||
m_freevars.insert_fresh(l.var());
|
||||
}
|
||||
|
||||
m_num_tc1 = m_num_tc1_lim.back();
|
||||
|
|
|
@ -80,7 +80,7 @@ namespace sat {
|
|||
ci.del(lit);
|
||||
switch (ci.m_num_trues) {
|
||||
case 0:
|
||||
m_unsat.insert(cls_idx);
|
||||
m_unsat.insert_fresh(cls_idx);
|
||||
dec_break(lit);
|
||||
break;
|
||||
case 1:
|
||||
|
@ -184,7 +184,7 @@ namespace sat {
|
|||
}
|
||||
switch (ci.m_num_trues) {
|
||||
case 0:
|
||||
m_unsat.insert(i);
|
||||
m_unsat.insert_fresh(i);
|
||||
break;
|
||||
case 1:
|
||||
inc_break(to_literal(ci.m_trues));
|
||||
|
|
|
@ -318,7 +318,7 @@ public:
|
|||
m_size(0)
|
||||
{}
|
||||
|
||||
void insert(unsigned x) {
|
||||
void insert_fresh(unsigned x) {
|
||||
SASSERT(!contains(x));
|
||||
m_index.reserve(x + 1, UINT_MAX);
|
||||
m_elems.reserve(m_size + 1);
|
||||
|
@ -327,6 +327,11 @@ public:
|
|||
m_size++;
|
||||
SASSERT(contains(x));
|
||||
}
|
||||
|
||||
void insert(unsigned x) {
|
||||
if (!contains(x))
|
||||
insert_fresh(x);
|
||||
}
|
||||
|
||||
void remove(unsigned x) {
|
||||
SASSERT(contains(x));
|
||||
|
|
Loading…
Reference in a new issue