Skip to content

Commit 05d5a9b

Browse files
author
Lukasz A.J. Wrona
committed
Address commenters' suggestions
1 parent 751e8f5 commit 05d5a9b

5 files changed

+179
-181
lines changed

src/solvers/refinement/bv_refinement_loop.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ decision_proceduret::resultt bv_refinementt::dec_solve()
4545
{
4646
xmlt xml("refinement-iteration");
4747
xml.data=std::to_string(iteration);
48-
std::cout << xml << '\n';
48+
status() << xml << '\n';
4949
}
5050

5151
switch(prop_solve())

src/solvers/refinement/string_constraint_generator.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ class string_constraint_generatort final
4646
bool string_printable=false;
4747
};
4848

49-
explicit string_constraint_generatort(
50-
const infot& info, const namespacet& ns);
49+
string_constraint_generatort(const infot& info, const namespacet& ns);
5150

5251
/// Axioms are of three kinds: universally quantified string constraint,
5352
/// not contains string constraints and simple formulas.
@@ -81,6 +80,11 @@ class string_constraint_generatort final
8180

8281
symbol_exprt fresh_exist_index(const irep_idt &prefix, const typet &type);
8382

83+
/// remove functions applications and create the necessary axioms
84+
/// \par parameters: an expression containing function applications
85+
/// \return an expression containing no function application
86+
exprt substitute_function_applications(const exprt& expr);
87+
8488
private:
8589
symbol_exprt fresh_boolean(const irep_idt &prefix);
8690
string_exprt fresh_string(const refined_string_typet &type);

src/solvers/refinement/string_constraint_generator_main.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,3 +628,19 @@ exprt string_constraint_generatort::add_axioms_for_to_char_array(
628628
string_exprt str=get_string_expr(args(f, 1)[0]);
629629
return str.content();
630630
}
631+
632+
exprt string_constraint_generatort::substitute_function_applications(
633+
const exprt &expr)
634+
{
635+
exprt copy=expr;
636+
for(exprt &operand : copy.operands())
637+
operand=substitute_function_applications(exprt(operand));
638+
639+
if(copy.id()==ID_function_application)
640+
{
641+
function_application_exprt f=to_function_application_expr(copy);
642+
return this->add_axioms_for_function_application(f);
643+
}
644+
645+
return copy;
646+
}

0 commit comments

Comments
 (0)