3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-07 18:05:21 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-12-21 17:10:37 -08:00
parent a63d1b1848
commit b0b6394c6c
5 changed files with 15 additions and 16 deletions

View file

@ -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) {

View file

@ -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;

View file

@ -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()));

View file

@ -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");

View file

@ -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);