@@ -71,7 +71,6 @@ namespace smt {
7171 m_l_internalized_stack (m),
7272 m_final_check_idx (0 ),
7373 m_cg_table (m),
74- m_units_to_reassert (m),
7574 m_conflict (null_b_justification),
7675 m_not_l (null_literal),
7776 m_conflict_resolution (mk_conflict_resolution(m, *this , m_dyn_ack_manager, p, m_assigned_literals, m_watches)),
@@ -2186,7 +2185,7 @@ namespace smt {
21862185 unsigned i = s.m_units_to_reassert_lim ;
21872186 unsigned sz = m_units_to_reassert.size ();
21882187 for (; i < sz; i++) {
2189- expr * unit = m_units_to_reassert. get (i );
2188+ expr* unit = m_units_to_reassert[i]. m_unit . get ();
21902189 cache_generation (unit, new_scope_lvl);
21912190 }
21922191 }
@@ -2377,19 +2376,18 @@ namespace smt {
23772376 unsigned i = units_to_reassert_lim;
23782377 unsigned sz = m_units_to_reassert.size ();
23792378 for (; i < sz; i++) {
2380- expr * unit = m_units_to_reassert. get (i) ;
2379+ auto & [ unit, sign, is_relevant] = m_units_to_reassert[i] ;
23812380 bool gate_ctx = true ;
23822381 internalize (unit, gate_ctx);
23832382 bool_var v = get_bool_var (unit);
2384- bool sign = m_units_to_reassert_sign[i] != 0 ;
23852383 literal l (v, sign);
23862384 assign (l, b_justification::mk_axiom ());
2385+ if (is_relevant)
2386+ mark_as_relevant (l);
23872387 TRACE (" reassert_units" , tout << " reasserting #" << unit->get_id () << " " << sign << " @ " << m_scope_lvl << " \n " ;);
23882388 }
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 ();
23932391 }
23942392
23952393 /* *
@@ -4310,8 +4308,7 @@ namespace smt {
43104308 bool unit_sign = lits[0 ].sign ();
43114309 while (m.is_not (unit, unit))
43124310 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) });
43154312 TRACE (" reassert_units" , tout << " asserting " << mk_pp (unit, m) << " #" << unit->get_id () << " " << unit_sign << " @ " << m_scope_lvl << " \n " ;);
43164313 }
43174314
0 commit comments