File tree 2 files changed +10
-5
lines changed
2 files changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -3159,14 +3159,18 @@ namespace sat {
3159
3159
// -------------------------------
3160
3160
// set literals equivalent
3161
3161
3162
- bool ba_solver::set_root (literal l, literal r) {
3163
- if (s ().is_assumption (l.var ())) {
3164
- return false ;
3165
- }
3162
+ void ba_solver::reserve_roots () {
3166
3163
m_root_vars.reserve (s ().num_vars (), false );
3167
3164
for (unsigned i = m_roots.size (); i < 2 * s ().num_vars (); ++i) {
3168
3165
m_roots.push_back (to_literal (i));
3169
3166
}
3167
+ }
3168
+
3169
+ bool ba_solver::set_root (literal l, literal r) {
3170
+ if (s ().is_assumption (l.var ())) {
3171
+ return false ;
3172
+ }
3173
+ reserve_roots ();
3170
3174
m_roots[l.index ()] = r;
3171
3175
m_roots[(~l).index ()] = ~r;
3172
3176
m_root_vars[l.var ()] = true ;
@@ -3175,7 +3179,7 @@ namespace sat {
3175
3179
3176
3180
void ba_solver::flush_roots () {
3177
3181
if (m_roots.empty ()) return ;
3178
-
3182
+ reserve_roots ();
3179
3183
// validate();
3180
3184
m_visited.resize (s ().num_vars ()*2 , false );
3181
3185
m_constraint_removed = false ;
Original file line number Diff line number Diff line change @@ -328,6 +328,7 @@ namespace sat {
328
328
void update_psm (constraint& c) const ;
329
329
void mutex_reduction ();
330
330
void update_pure ();
331
+ void reserve_roots ();
331
332
332
333
unsigned use_count (literal lit) const { return m_cnstr_use_list[lit.index ()].size () + m_clause_use_list.get (lit).size (); }
333
334
You can’t perform that action at this time.
0 commit comments