mirror of
https://github.com/Z3Prover/z3
synced 2025-04-14 21:08:46 +00:00
print model-add in display method
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
2313b14210
commit
107bfb1438
|
@ -217,8 +217,10 @@ public:
|
||||||
m_ctx->get_model(md);
|
m_ctx->get_model(md);
|
||||||
buffer<symbol> r;
|
buffer<symbol> r;
|
||||||
m_ctx->get_relevant_labels(0, r);
|
m_ctx->get_relevant_labels(0, r);
|
||||||
|
labels_vec rv;
|
||||||
|
rv.append(r.size(), r.c_ptr());
|
||||||
model_converter_ref mc;
|
model_converter_ref mc;
|
||||||
mc = model_and_labels2model_converter(md.get(), r);
|
mc = model_and_labels2model_converter(md.get(), rv);
|
||||||
mc = concat(fmc.get(), mc.get());
|
mc = concat(fmc.get(), mc.get());
|
||||||
in->add(mc.get());
|
in->add(mc.get());
|
||||||
}
|
}
|
||||||
|
@ -268,7 +270,9 @@ public:
|
||||||
m_ctx->get_model(md);
|
m_ctx->get_model(md);
|
||||||
buffer<symbol> r;
|
buffer<symbol> r;
|
||||||
m_ctx->get_relevant_labels(0, r);
|
m_ctx->get_relevant_labels(0, r);
|
||||||
in->add(model_and_labels2model_converter(md.get(), r));
|
labels_vec rv;
|
||||||
|
rv.append(r.size(), r.c_ptr());
|
||||||
|
in->add(model_and_labels2model_converter(md.get(), rv));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -179,6 +179,7 @@ bool solver::is_literal(ast_manager& m, expr* e) {
|
||||||
void solver::assert_expr(expr* f) {
|
void solver::assert_expr(expr* f) {
|
||||||
expr_ref fml(f, get_manager());
|
expr_ref fml(f, get_manager());
|
||||||
model_converter_ref mc = get_model_converter();
|
model_converter_ref mc = get_model_converter();
|
||||||
|
mc = concat(mc0(), mc.get());
|
||||||
if (mc) {
|
if (mc) {
|
||||||
(*mc)(fml);
|
(*mc)(fml);
|
||||||
}
|
}
|
||||||
|
@ -190,6 +191,7 @@ void solver::assert_expr(expr* f, expr* t) {
|
||||||
expr_ref fml(f, m);
|
expr_ref fml(f, m);
|
||||||
expr_ref a(t, m);
|
expr_ref a(t, m);
|
||||||
model_converter_ref mc = get_model_converter();
|
model_converter_ref mc = get_model_converter();
|
||||||
|
mc = concat(mc0(), mc.get());
|
||||||
if (mc) {
|
if (mc) {
|
||||||
(*mc)(fml);
|
(*mc)(fml);
|
||||||
// (*mc0())(a);
|
// (*mc0())(a);
|
||||||
|
|
|
@ -58,7 +58,7 @@ void generic_model_converter::display(std::ostream & out) {
|
||||||
display_del(out, e.m_f);
|
display_del(out, e.m_f);
|
||||||
}
|
}
|
||||||
for (entry const& e : m_add_entries) {
|
for (entry const& e : m_add_entries) {
|
||||||
display_del(out, e.m_f);
|
display_add(out, m, e.m_f, e.m_def);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,11 +96,11 @@ model_converter * concat(model_converter * mc1, model_converter * mc2) {
|
||||||
|
|
||||||
class model2mc : public model_converter {
|
class model2mc : public model_converter {
|
||||||
model_ref m_model;
|
model_ref m_model;
|
||||||
buffer<symbol> m_labels;
|
labels_vec m_labels;
|
||||||
public:
|
public:
|
||||||
model2mc(model * m):m_model(m) {}
|
model2mc(model * m):m_model(m) {}
|
||||||
|
|
||||||
model2mc(model * m, buffer<symbol> const & r):m_model(m), m_labels(r) {}
|
model2mc(model * m, labels_vec const & r):m_model(m), m_labels(r) {}
|
||||||
|
|
||||||
virtual ~model2mc() {}
|
virtual ~model2mc() {}
|
||||||
|
|
||||||
|
@ -122,27 +122,25 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void display(std::ostream & out) override {
|
void display(std::ostream & out) override {
|
||||||
out << "(model->model-converter-wrapper\n";
|
out << "(rmodel->model-converter-wrapper\n";
|
||||||
model_v2_pp(out, *m_model);
|
model_v2_pp(out, *m_model);
|
||||||
out << ")\n";
|
out << ")\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual model_converter * translate(ast_translation & translator) {
|
virtual model_converter * translate(ast_translation & translator) {
|
||||||
model * m = m_model->translate(translator);
|
model * m = m_model->translate(translator);
|
||||||
return alloc(model2mc, m);
|
return alloc(model2mc, m, m_labels);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
model_converter * model2model_converter(model * m) {
|
model_converter * model2model_converter(model * m) {
|
||||||
if (m == 0)
|
if (!m) return nullptr;
|
||||||
return 0;
|
|
||||||
return alloc(model2mc, m);
|
return alloc(model2mc, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
model_converter * model_and_labels2model_converter(model * m, buffer<symbol> & r) {
|
model_converter * model_and_labels2model_converter(model * m, labels_vec const & r) {
|
||||||
if (m == 0)
|
if (!m) return nullptr;
|
||||||
return 0;
|
|
||||||
return alloc(model2mc, m, r);
|
return alloc(model2mc, m, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ model_converter * concat(model_converter * mc1, model_converter * mc2);
|
||||||
|
|
||||||
model_converter * model2model_converter(model * m);
|
model_converter * model2model_converter(model * m);
|
||||||
|
|
||||||
model_converter * model_and_labels2model_converter(model * m, buffer<symbol> &r);
|
model_converter * model_and_labels2model_converter(model * m, labels_vec const &r);
|
||||||
|
|
||||||
void model_converter2model(ast_manager & mng, model_converter * mc, model_ref & m);
|
void model_converter2model(ast_manager & mng, model_converter * mc, model_ref & m);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue