Skip to content

Commit bc3b0f6

Browse files
introduce fresh term when none is available in context or model to fix #2456
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 01920ab commit bc3b0f6

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/smt/smt_model_checker.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ namespace smt {
4949
m_iteration_idx(0),
5050
m_has_rec_fun(false),
5151
m_curr_model(nullptr),
52-
m_pinned_exprs(m) {
52+
m_pinned_exprs(m),
53+
m_fresh_exprs(m) {
5354
}
5455

5556
model_checker::~model_checker() {
@@ -79,15 +80,14 @@ namespace smt {
7980
}
8081

8182
expr * model_checker::get_type_compatible_term(expr * val) {
82-
for (auto const& kv : m_value2expr) {
83-
if (m.get_sort(kv.m_key) == m.get_sort(val) &&
84-
!contains_model_value(kv.m_value)) {
85-
return kv.m_value;
83+
for (expr* f : m_fresh_exprs) {
84+
if (m.get_sort(f) == m.get_sort(val)) {
85+
return f;
8686
}
8787
}
8888
app* fresh_term = m.mk_fresh_const("sk", m.get_sort(val));
8989
m_context->ensure_internalized(fresh_term);
90-
m_value2expr.insert(val, fresh_term);
90+
m_fresh_exprs.push_back(fresh_term);
9191
return fresh_term;
9292
}
9393

src/smt/smt_model_checker.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ namespace smt {
5454
bool m_has_rec_fun;
5555
proto_model * m_curr_model;
5656
obj_map<expr, expr *> m_value2expr;
57+
expr_ref_vector m_fresh_exprs;
5758

5859
friend class instantiation_set;
5960

0 commit comments

Comments
 (0)