Skip to content

Commit

Permalink
fix #7121
Browse files Browse the repository at this point in the history
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
  • Loading branch information
NikolajBjorner committed Feb 16, 2024
1 parent 2b14793 commit 84d592c
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/ast/converters/generic_model_converter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ void generic_model_converter::operator()(model_ref & md) {
expr_ref val(m);
unsigned arity;
bool reset_ev = false;
obj_map<sort, ptr_vector<expr>> uninterpreted;
for (unsigned i = m_entries.size(); i-- > 0; ) {
entry const& e = m_entries[i];
switch (e.m_instruction) {
Expand All @@ -63,6 +64,13 @@ void generic_model_converter::operator()(model_ref & md) {
reset_ev = old_val != nullptr;
md->register_decl(e.m_f, val);
}
// corner case when uninterpreted constants are eliminated
sort* s = e.m_f->get_range();
if (m.is_uninterp(s) && !md->has_uninterpreted_sort(s)) {
uninterpreted.insert_if_not_there(s, {});
if (!uninterpreted[s].contains(val))
uninterpreted[s].push_back(val);
}
}
else {
func_interp * old_val = md->get_func_interp(e.m_f);
Expand All @@ -84,6 +92,9 @@ void generic_model_converter::operator()(model_ref & md) {
break;
}
}
for (auto const& [s, u] : uninterpreted) {
md->register_usort(s, u.size(), u.data());
}
TRACE("model_converter", tout << "after generic_model_converter\n"; model_v2_pp(tout, *md););
}

Expand Down

0 comments on commit 84d592c

Please sign in to comment.