Skip to content

Commit db13dc9

Browse files
Define function for array_pointer_association
This allows the constraint generator to do a pass on equations without adding axioms but just adding the assaciation between pointer and arrays.
1 parent f97e518 commit db13dc9

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/solvers/refinement/string_constraint_generator.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,12 @@ class string_constraint_generatort final
136136

137137
array_poolt array_pool;
138138

139+
/// Associate array to pointer, and array to length
140+
/// \return an expression if the given function application is one of
141+
/// associate pointer and associate length
142+
optionalt<exprt>
143+
make_array_pointer_association(const function_application_exprt &expr);
144+
139145
// Type used by primitives to signal errors
140146
const signedbv_typet get_return_code_type()
141147
{

src/solvers/refinement/string_constraint_generator_main.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,17 @@ static irep_idt get_function_name(const function_application_exprt &expr)
437437
: to_symbol_expr(name).get_identifier();
438438
}
439439

440+
optionalt<exprt> string_constraint_generatort::make_array_pointer_association(
441+
const function_application_exprt &expr)
442+
{
443+
const irep_idt &id = get_function_name(expr);
444+
if(id == ID_cprover_associate_array_to_pointer_func)
445+
return associate_array_to_pointer(expr);
446+
else if(id == ID_cprover_associate_length_to_array_func)
447+
return associate_length_to_array(expr);
448+
return {};
449+
}
450+
440451
/// strings contained in this call are converted to objects of type
441452
/// `string_exprt`, through adding axioms. Axioms are then added to enforce that
442453
/// the result corresponds to the function application.

0 commit comments

Comments
 (0)