mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 18:05:21 +00:00
parent
a63d1b1848
commit
b0b6394c6c
|
@ -1388,6 +1388,7 @@ ast_manager::ast_manager(ast_manager const & src, bool disable_proofs):
|
|||
m_format_manager = alloc(ast_manager, PGM_DISABLED, m_trace_stream, true);
|
||||
init();
|
||||
copy_families_plugins(src);
|
||||
update_fresh_id(src);
|
||||
}
|
||||
|
||||
void ast_manager::update_fresh_id(ast_manager const& m) {
|
||||
|
|
|
@ -119,6 +119,7 @@ namespace sat {
|
|||
void add_ate(clause const& c);
|
||||
|
||||
bool empty() const { return m_entries.empty(); }
|
||||
unsigned size() const { return m_entries.size(); }
|
||||
|
||||
void reset();
|
||||
bool check_invariant(unsigned num_vars) const;
|
||||
|
|
|
@ -1785,7 +1785,7 @@ namespace sat {
|
|||
TRACE("sat", for (bool_var v = 0; v < num; v++) tout << v << ": " << m_model[v] << "\n";);
|
||||
|
||||
if (m_clone) {
|
||||
IF_VERBOSE(SAT_VB_LVL, verbose_stream() << "\"checking model (on original set of clauses)\"\n";);
|
||||
IF_VERBOSE(1, verbose_stream() << "\"checking model (on original set of clauses)\"\n";);
|
||||
if (!m_clone->check_model(m_model)) {
|
||||
//IF_VERBOSE(0, display(verbose_stream()));
|
||||
//IF_VERBOSE(0, display_watches(verbose_stream()));
|
||||
|
|
|
@ -813,12 +813,9 @@ private:
|
|||
}
|
||||
sat::model const & ll_m = m_solver.get_model();
|
||||
mdl = alloc(model, m);
|
||||
for (auto const& kv : m_map) {
|
||||
expr * n = kv.m_key;
|
||||
if (is_app(n) && to_app(n)->get_num_args() > 0) {
|
||||
continue;
|
||||
}
|
||||
sat::bool_var v = kv.m_value;
|
||||
for (sat::bool_var v = 0; v < ll_m.size(); ++v) {
|
||||
expr* n = m_sat_mc->var2expr(v);
|
||||
if (!n || (is_app(n) && to_app(n)->get_num_args() > 0)) continue;
|
||||
switch (sat::value_at(v, ll_m)) {
|
||||
case l_true:
|
||||
mdl->register_decl(to_app(n)->get_decl(), m.mk_true());
|
||||
|
@ -830,23 +827,23 @@ private:
|
|||
break;
|
||||
}
|
||||
}
|
||||
//IF_VERBOSE(0, model_v2_pp(verbose_stream(), *mdl, true););
|
||||
|
||||
if (m_sat_mc) {
|
||||
//IF_VERBOSE(0, m_sat_mc->display(verbose_stream() << "satmc\n"););
|
||||
// IF_VERBOSE(0, m_sat_mc->display(verbose_stream() << "satmc\n"););
|
||||
(*m_sat_mc)(mdl);
|
||||
}
|
||||
if (m_mcs.back()) {
|
||||
//IF_VERBOSE(0, m_mc0->display(verbose_stream() << "mc0\n"););
|
||||
(*m_mcs.back())(mdl);
|
||||
}
|
||||
TRACE("sat", model_smt2_pp(tout, m, *mdl, 0););
|
||||
|
||||
TRACE("sat", model_smt2_pp(tout, m, *mdl, 0););
|
||||
|
||||
if (!gparams::get_ref().get_bool("model_validate", false)) return;
|
||||
if (!gparams::get_ref().get_bool("model_validate", false)) {
|
||||
return;
|
||||
}
|
||||
IF_VERBOSE(1, verbose_stream() << "Verifying solution\n";);
|
||||
model_evaluator eval(*mdl);
|
||||
eval.set_model_completion(false);
|
||||
// eval.set_model_completion(false);
|
||||
bool all_true = true;
|
||||
//unsigned i = 0;
|
||||
for (expr * f : m_fmls) {
|
||||
|
@ -856,14 +853,15 @@ private:
|
|||
tout << "Evaluation failed: " << mk_pp(f, m) << " to " << mk_pp(f, m) << "\n";
|
||||
model_smt2_pp(tout, m, *(mdl.get()), 0););
|
||||
if (!m.is_true(tmp)) {
|
||||
IF_VERBOSE(0, verbose_stream() << "failed to verify: " << mk_pp(f, m) << "\n";);
|
||||
IF_VERBOSE(0, verbose_stream() << "failed to verify: " << mk_pp(f, m) << "\n");
|
||||
IF_VERBOSE(0, verbose_stream() << "evaluated to " << tmp << "\n");
|
||||
all_true = false;
|
||||
}
|
||||
//IF_VERBOSE(0, verbose_stream() << (i++) << ": " << mk_pp(f, m) << "\n");
|
||||
}
|
||||
if (!all_true) {
|
||||
IF_VERBOSE(0, verbose_stream() << m_params << "\n");
|
||||
IF_VERBOSE(0, m_sat_mc->display(verbose_stream() << "sat mc\n"));
|
||||
// IF_VERBOSE(0, m_sat_mc->display(verbose_stream() << "sat mc\n"));
|
||||
IF_VERBOSE(0, if (m_mcs.back()) m_mcs.back()->display(verbose_stream() << "mc0\n"));
|
||||
//IF_VERBOSE(0, m_solver.display(verbose_stream()));
|
||||
IF_VERBOSE(0, for (auto const& kv : m_map) verbose_stream() << mk_pp(kv.m_key, m) << " |-> " << kv.m_value << "\n");
|
||||
|
|
|
@ -208,7 +208,6 @@ void solver::assert_expr(expr* f, expr* t) {
|
|||
expr_ref fml(f, m);
|
||||
expr_ref a(t, m);
|
||||
if (m_enforce_model_conversion) {
|
||||
IF_VERBOSE(0, verbose_stream() << "enforce model conversion\n";);
|
||||
model_converter_ref mc = get_model_converter();
|
||||
if (mc) {
|
||||
(*mc)(fml);
|
||||
|
|
Loading…
Reference in a new issue