void mk_safe(expr_ref_vector& conjs) { datalog::flatten_and(conjs); for (unsigned i = 0; i < conjs.size(); ++i) { expr * atom = conjs[i].get(); bool negated = m.is_not(atom, atom); //remove negation SASSERT(!m.is_true(atom)); if (!is_uninterp(atom) || to_app(atom)->get_num_args() != 0) { app * name = mk_fresh(atom); conjs[i] = negated?m.mk_not(name):name; } } }
void init_bcd() { m_trail.reset(); m_asm_set.reset(); m_cores.reset(); m_sigmas.reset(); m_lazy_soft.reset(); for (unsigned i = 0; i < m_soft.size(); ++i) { m_sigmas.push_back(m_weights[i]); m_soft_aux.push_back(mk_fresh()); if (m_enable_lazy) { m_lazy_soft.push_back(i); } else { enable_soft_constraint(i); } } m_upper += rational(1); }