3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-09 04:31:24 +00:00

delay evaluation of model, throttle propagation, introduce LUT results into cutset

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-02-05 12:33:42 -08:00
parent 7b2f6791bc
commit 2d59b81353
14 changed files with 112 additions and 84 deletions

View file

@ -215,27 +215,8 @@ namespace smt {
proto_model_ref m_proto_model;
model_ref m_model;
std::string m_unknown;
void mk_proto_model(lbool r);
struct scoped_mk_model {
context & m_ctx;
scoped_mk_model(context & ctx):m_ctx(ctx) {
m_ctx.m_proto_model = nullptr;
m_ctx.m_model = nullptr;
}
~scoped_mk_model() {
if (m_ctx.m_proto_model.get() != nullptr) {
m_ctx.m_model = m_ctx.m_proto_model->mk_model();
try {
m_ctx.add_rec_funs_to_model();
}
catch (...) {
// no op
}
m_ctx.m_proto_model = nullptr; // proto_model is not needed anymore.
}
}
};
void mk_proto_model();
void reset_model() { m_model = nullptr; m_proto_model = nullptr; }
// -----------------------------------
//
@ -1614,12 +1595,12 @@ namespace smt {
expr_ref_vector get_trail();
void get_model(model_ref & m) const;
void get_model(model_ref & m);
void set_model(model* m) { m_model = m; }
bool update_model(bool refinalize);
void get_proto_model(proto_model_ref & m) const;
bool validate_model();
unsigned get_num_asserted_formulas() const { return m_asserted_formulas.get_num_formulas(); }