@@ -71,7 +71,6 @@ namespace smt {
71
71
m_l_internalized_stack (m),
72
72
m_final_check_idx (0 ),
73
73
m_cg_table (m),
74
- m_units_to_reassert (m),
75
74
m_conflict (null_b_justification),
76
75
m_not_l (null_literal),
77
76
m_conflict_resolution (mk_conflict_resolution(m, *this , m_dyn_ack_manager, p, m_assigned_literals, m_watches)),
@@ -2186,7 +2185,7 @@ namespace smt {
2186
2185
unsigned i = s.m_units_to_reassert_lim ;
2187
2186
unsigned sz = m_units_to_reassert.size ();
2188
2187
for (; i < sz; i++) {
2189
- expr * unit = m_units_to_reassert. get (i );
2188
+ expr* unit = m_units_to_reassert[i]. m_unit . get ();
2190
2189
cache_generation (unit, new_scope_lvl);
2191
2190
}
2192
2191
}
@@ -2377,19 +2376,18 @@ namespace smt {
2377
2376
unsigned i = units_to_reassert_lim;
2378
2377
unsigned sz = m_units_to_reassert.size ();
2379
2378
for (; i < sz; i++) {
2380
- expr * unit = m_units_to_reassert. get (i) ;
2379
+ auto & [ unit, sign, is_relevant] = m_units_to_reassert[i] ;
2381
2380
bool gate_ctx = true ;
2382
2381
internalize (unit, gate_ctx);
2383
2382
bool_var v = get_bool_var (unit);
2384
- bool sign = m_units_to_reassert_sign[i] != 0 ;
2385
2383
literal l (v, sign);
2386
2384
assign (l, b_justification::mk_axiom ());
2385
+ if (is_relevant)
2386
+ mark_as_relevant (l);
2387
2387
TRACE (" reassert_units" , tout << " reasserting #" << unit->get_id () << " " << sign << " @ " << m_scope_lvl << " \n " ;);
2388
2388
}
2389
- if (at_base_level ()) {
2390
- m_units_to_reassert.reset ();
2391
- m_units_to_reassert_sign.reset ();
2392
- }
2389
+ if (at_base_level ())
2390
+ m_units_to_reassert.reset ();
2393
2391
}
2394
2392
2395
2393
/* *
@@ -4310,8 +4308,7 @@ namespace smt {
4310
4308
bool unit_sign = lits[0 ].sign ();
4311
4309
while (m.is_not (unit, unit))
4312
4310
unit_sign = !unit_sign;
4313
- m_units_to_reassert.push_back (unit);
4314
- m_units_to_reassert_sign.push_back (unit_sign);
4311
+ m_units_to_reassert.push_back ({ expr_ref (unit, m), unit_sign, is_relevant (unit) });
4315
4312
TRACE (" reassert_units" , tout << " asserting " << mk_pp (unit, m) << " #" << unit->get_id () << " " << unit_sign << " @ " << m_scope_lvl << " \n " ;);
4316
4313
}
4317
4314
0 commit comments