@@ -85,6 +85,7 @@ void smt2_incremental_decision_proceduret::initialize_array_elements(
8585 const array_exprt &array,
8686 const smt_identifier_termt &array_identifier)
8787{
88+ identifier_table.emplace (array_identifier.identifier (), array_identifier);
8889 const std::vector<exprt> &elements = array.operands ();
8990 const typet &index_type = array.type ().index_type ();
9091 for (std::size_t i = 0 ; i < elements.size (); ++i)
@@ -136,13 +137,15 @@ void send_function_definition(
136137 const irep_idt &symbol_identifier,
137138 const std::unique_ptr<smt_base_solver_processt> &solver_process,
138139 std::unordered_map<exprt, smt_identifier_termt, irep_hash>
139- &expression_identifiers)
140+ &expression_identifiers,
141+ std::unordered_map<irep_idt, smt_identifier_termt> &identifier_table)
140142{
141143 const smt_declare_function_commandt function{
142144 smt_identifier_termt (
143145 symbol_identifier, convert_type_to_smt_sort (expr.type ())),
144146 {}};
145147 expression_identifiers.emplace (expr, function.identifier ());
148+ identifier_table.emplace (symbol_identifier, function.identifier ());
146149 solver_process->send (function);
147150}
148151
@@ -184,7 +187,8 @@ void smt2_incremental_decision_proceduret::define_dependent_functions(
184187 *symbol_expr,
185188 symbol_expr->get_identifier (),
186189 solver_process,
187- expression_identifiers);
190+ expression_identifiers,
191+ identifier_table);
188192 }
189193 else
190194 {
@@ -193,6 +197,7 @@ void smt2_incremental_decision_proceduret::define_dependent_functions(
193197 const smt_define_function_commandt function{
194198 symbol->name , {}, convert_expr_to_smt (symbol->value )};
195199 expression_identifiers.emplace (*symbol_expr, function.identifier ());
200+ identifier_table.emplace (identifier, function.identifier ());
196201 solver_process->send (function);
197202 }
198203 }
@@ -211,7 +216,8 @@ void smt2_incremental_decision_proceduret::define_dependent_functions(
211216 *nondet_symbol,
212217 nondet_symbol->get_identifier (),
213218 solver_process,
214- expression_identifiers);
219+ expression_identifiers,
220+ identifier_table);
215221 }
216222 to_be_defined.pop ();
217223 }
@@ -264,6 +270,8 @@ void smt2_incremental_decision_proceduret::ensure_handle_for_expr_defined(
264270 smt_define_function_commandt function{
265271 " B" + std::to_string (handle_sequence ()), {}, convert_expr_to_smt (expr)};
266272 expression_handle_identifiers.emplace (expr, function.identifier ());
273+ identifier_table.emplace (
274+ function.identifier ().identifier (), function.identifier ());
267275 solver_process->send (function);
268276}
269277
0 commit comments