3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-11 10:18:06 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-02-01 12:09:16 -08:00
parent 669c018242
commit becce1d043
3 changed files with 10 additions and 13 deletions

View file

@ -75,7 +75,7 @@ namespace sat {
void solver::copy(solver const & src) {
pop_to_base_level();
SASSERT(m_mc.empty() && src.m_mc.empty());
SASSERT(scope_lvl() == 0);
SASSERT(at_search_lvl());
// create new vars
if (num_vars() < src.num_vars()) {
for (bool_var v = num_vars(); v < src.num_vars(); v++) {
@ -85,8 +85,15 @@ namespace sat {
VERIFY(v == mk_var(ext, dvar));
}
}
//
// register the extension before performing assignments.
// the assignments may call back into the extension.
//
if (src.get_extension()) {
m_ext = src.get_extension()->copy(this);
}
{
unsigned sz = src.scope_lvl() == 0 ? src.m_trail.size() : src.m_scopes[0].m_trail_lim;
unsigned sz = scope_lvl() == 0 ? src.m_trail.size() : src.m_scopes[0].m_trail_lim;
for (unsigned i = 0; i < sz; ++i) {
assign(src.m_trail[i], justification());
}
@ -125,9 +132,6 @@ namespace sat {
}
}
if (src.get_extension()) {
m_ext = src.get_extension()->copy(this);
}
m_user_scope_literals.reset();
m_user_scope_literals.append(src.m_user_scope_literals);
}