mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
enable core minimization with qsat in case it turns out to be useful
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
3ac4709992
commit
c7ff05cc78
16 changed files with 235 additions and 132 deletions
|
@ -545,7 +545,7 @@ public:
|
|||
}
|
||||
m_mus.reset();
|
||||
for (unsigned i = 0; i < core.size(); ++i) {
|
||||
m_mus.add_soft(core[i]);
|
||||
VERIFY(i == m_mus.add_soft(core[i]));
|
||||
}
|
||||
unsigned_vector mus_idx;
|
||||
lbool is_sat = m_mus.get_mus(mus_idx);
|
||||
|
@ -832,12 +832,8 @@ public:
|
|||
tout << m_defs;
|
||||
tout << m_asms;
|
||||
);
|
||||
for (unsigned i = 0; i < m_defs.size(); ++i) {
|
||||
s().assert_expr(m_defs[i].get());
|
||||
}
|
||||
for (unsigned i = 0; i < m_asms.size(); ++i) {
|
||||
s().assert_expr(m_asms[i].get());
|
||||
}
|
||||
s().assert_expr(m_defs);
|
||||
s().assert_expr(m_asms);
|
||||
}
|
||||
// else: there is only a single assignment to these soft constraints.
|
||||
}
|
||||
|
@ -848,9 +844,7 @@ public:
|
|||
for (unsigned i = 0; i < s().get_num_assertions(); ++i) {
|
||||
smt_solver->assert_expr(s().get_assertion(i));
|
||||
}
|
||||
for (unsigned i = 0; i < core.size(); ++i) {
|
||||
smt_solver->assert_expr(core[i]);
|
||||
}
|
||||
smt_solver->assert_expr(core);
|
||||
lbool is_sat = smt_solver->check_sat(0, 0);
|
||||
if (is_sat == l_true) {
|
||||
IF_VERBOSE(0, verbose_stream() << "not a core\n";);
|
||||
|
|
|
@ -555,10 +555,9 @@ namespace opt {
|
|||
m_params.set_bool("minimize_core_partial", true); // false);
|
||||
m_params.set_bool("minimize_core", true);
|
||||
m_sat_solver = mk_inc_sat_solver(m, m_params);
|
||||
unsigned sz = get_solver().get_num_assertions();
|
||||
for (unsigned i = 0; i < sz; ++i) {
|
||||
m_sat_solver->assert_expr(get_solver().get_assertion(i));
|
||||
}
|
||||
expr_ref_vector fmls(m);
|
||||
get_solver().get_assertions(fmls);
|
||||
m_sat_solver->assert_expr(fmls);
|
||||
m_solver = m_sat_solver.get();
|
||||
}
|
||||
|
||||
|
|
|
@ -316,8 +316,9 @@ namespace opt {
|
|||
return m_context.get_formulas()[idx];
|
||||
}
|
||||
|
||||
void opt_solver::display(std::ostream & out) const {
|
||||
std::ostream& opt_solver::display(std::ostream & out) const {
|
||||
m_context.display(out);
|
||||
return out;
|
||||
}
|
||||
|
||||
smt::theory_var opt_solver::add_objective(app* term) {
|
||||
|
|
|
@ -104,7 +104,7 @@ namespace opt {
|
|||
virtual void set_progress_callback(progress_callback * callback);
|
||||
virtual unsigned get_num_assertions() const;
|
||||
virtual expr * get_assertion(unsigned idx) const;
|
||||
virtual void display(std::ostream & out) const;
|
||||
virtual std::ostream& display(std::ostream & out) const;
|
||||
virtual ast_manager& get_manager() { return m; }
|
||||
void set_logic(symbol const& logic);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue