mirror of
https://github.com/Z3Prover/z3
synced 2025-06-06 14:13:23 +00:00
introduce fresh term when none is available in context or model to fix #2456
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
01920abf46
commit
bc3b0f6e33
2 changed files with 7 additions and 6 deletions
|
@ -49,7 +49,8 @@ namespace smt {
|
||||||
m_iteration_idx(0),
|
m_iteration_idx(0),
|
||||||
m_has_rec_fun(false),
|
m_has_rec_fun(false),
|
||||||
m_curr_model(nullptr),
|
m_curr_model(nullptr),
|
||||||
m_pinned_exprs(m) {
|
m_pinned_exprs(m),
|
||||||
|
m_fresh_exprs(m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
model_checker::~model_checker() {
|
model_checker::~model_checker() {
|
||||||
|
@ -79,15 +80,14 @@ namespace smt {
|
||||||
}
|
}
|
||||||
|
|
||||||
expr * model_checker::get_type_compatible_term(expr * val) {
|
expr * model_checker::get_type_compatible_term(expr * val) {
|
||||||
for (auto const& kv : m_value2expr) {
|
for (expr* f : m_fresh_exprs) {
|
||||||
if (m.get_sort(kv.m_key) == m.get_sort(val) &&
|
if (m.get_sort(f) == m.get_sort(val)) {
|
||||||
!contains_model_value(kv.m_value)) {
|
return f;
|
||||||
return kv.m_value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
app* fresh_term = m.mk_fresh_const("sk", m.get_sort(val));
|
app* fresh_term = m.mk_fresh_const("sk", m.get_sort(val));
|
||||||
m_context->ensure_internalized(fresh_term);
|
m_context->ensure_internalized(fresh_term);
|
||||||
m_value2expr.insert(val, fresh_term);
|
m_fresh_exprs.push_back(fresh_term);
|
||||||
return fresh_term;
|
return fresh_term;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ namespace smt {
|
||||||
bool m_has_rec_fun;
|
bool m_has_rec_fun;
|
||||||
proto_model * m_curr_model;
|
proto_model * m_curr_model;
|
||||||
obj_map<expr, expr *> m_value2expr;
|
obj_map<expr, expr *> m_value2expr;
|
||||||
|
expr_ref_vector m_fresh_exprs;
|
||||||
|
|
||||||
friend class instantiation_set;
|
friend class instantiation_set;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue