@@ -195,6 +195,30 @@ namespace euf {
195
195
m_reason_unknown.clear ();
196
196
for (auto * s : m_solvers)
197
197
s->init_search ();
198
+
199
+ for (auto const & [var, value] : m_initial_values) {
200
+ if (m.is_bool (var)) {
201
+ auto lit = expr2literal (var);
202
+ if (lit == sat::null_literal) {
203
+ IF_VERBOSE (5 , verbose_stream () << " no literal associated with " << mk_pp (var, m) << " := " << mk_pp (value, m) << " \n " );
204
+ continue ;
205
+ }
206
+ if (m.is_true (value))
207
+ s ().set_phase (lit);
208
+ else if (m.is_false (value))
209
+ s ().set_phase (~lit);
210
+ else
211
+ IF_VERBOSE (5 , verbose_stream () << " malformed value " << mk_pp (var, m) << " := " << mk_pp (value, m) << " \n " );
212
+ continue ;
213
+ }
214
+ auto * th = m_id2solver.get (var->get_sort ()->get_family_id (), nullptr );
215
+ if (!th) {
216
+ IF_VERBOSE (5 , verbose_stream () << " no default initialization associated with " << mk_pp (var, m) << " := " << mk_pp (value, m) << " \n " );
217
+ continue ;
218
+ }
219
+ th->initialize_value (var, value);
220
+ }
221
+
198
222
}
199
223
200
224
bool solver::is_external (bool_var v) {
@@ -1257,27 +1281,10 @@ namespace euf {
1257
1281
}
1258
1282
1259
1283
void solver::user_propagate_initialize_value (expr* var, expr* value) {
1260
- if (m.is_bool (var)) {
1261
- auto lit = expr2literal (var);
1262
- if (lit == sat::null_literal) {
1263
- IF_VERBOSE (5 , verbose_stream () << " no literal associated with " << mk_pp (var, m) << " := " << mk_pp (value, m) << " \n " );
1264
- return ;
1265
- }
1266
- if (m.is_true (value))
1267
- s ().set_phase (lit);
1268
- else if (m.is_false (value))
1269
- s ().set_phase (~lit);
1270
- else
1271
- IF_VERBOSE (5 , verbose_stream () << " malformed value " << mk_pp (var, m) << " := " << mk_pp (value, m) << " \n " );
1272
- return ;
1273
- }
1274
- auto * th = m_id2solver.get (var->get_sort ()->get_family_id (), nullptr );
1275
- if (!th) {
1276
- IF_VERBOSE (5 , verbose_stream () << " no default initialization associated with " << mk_pp (var, m) << " := " << mk_pp (value, m) << " \n " );
1277
- return ;
1278
- }
1279
- // th->initialize_value(var, value);
1280
- IF_VERBOSE (5 , verbose_stream () << " no default initialization associated with " << mk_pp (var, m) << " := " << mk_pp (value, m) << " \n " );
1284
+
1285
+ m_initial_values.push_back ({expr_ref (var, m), expr_ref (value, m)});
1286
+ push (push_back_vector (m_initial_values));
1287
+
1281
1288
}
1282
1289
1283
1290
0 commit comments