Skip to content

Commit 4fe1831

Browse files
committed
Build identifier_table in SMT incremental decision procedure
src/solvers/smt2_incremental/smt2_incremental_decision_procedure.cpp
1 parent f1eb62c commit 4fe1831

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/solvers/smt2_incremental/smt2_incremental_decision_procedure.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)