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:
parent
7b2f6791bc
commit
2d59b81353
14 changed files with 112 additions and 84 deletions
|
@ -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(); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue