cprover
nondet.cpp File Reference
#include "nondet.h"
#include <util/arith_tools.h>
#include <util/c_types.h>
#include <util/fresh_symbol.h>
#include <util/symbol.h>
+ Include dependency graph for nondet.cpp:

Go to the source code of this file.

Functions

symbol_exprt generate_nondet_int (const mp_integer &min_value, const mp_integer &max_value, const std::string &name_prefix, const typet &int_type, const irep_idt &mode, const source_locationt &source_location, symbol_table_baset &symbol_table, code_blockt &instructions)
 Gets a fresh nondet choice in range (min_value, max_value). More...
 
code_blockt generate_nondet_switch (const irep_idt &name_prefix, const alternate_casest &switch_cases, const typet &int_type, const irep_idt &mode, const source_locationt &source_location, symbol_table_baset &symbol_table)
 Pick nondeterministically between imperative actions 'switch_cases'. More...
 

Function Documentation

◆ generate_nondet_int()

symbol_exprt generate_nondet_int ( const mp_integer min_value,
const mp_integer max_value,
const std::string &  name_prefix,
const typet int_type,
const irep_idt mode,
const source_locationt source_location,
symbol_table_baset symbol_table,
code_blockt instructions 
)

Gets a fresh nondet choice in range (min_value, max_value).

GOTO generated resembles:

Parameters
min_valueMinimum value (inclusive) of returned int.
max_valueMaximum value (inclusive) of returned int.
name_prefixPrefix for the fresh symbol name generated (should be function id)
int_typeThe type of the int used to non-deterministically choose one of the switch cases.
modeMode (language) of the symbol to be generated.
source_locationThe location to mark the generated int with.
symbol_tableThe global symbol table.
instructions[out]: Output instructions are written to 'instructions'. These declare, nondet-initialise and range-constrain (with assume statements) a fresh integer.
Returns
Returns a symbol expression for the resulting integer.

Definition at line 36 of file nondet.cpp.

◆ generate_nondet_switch()

code_blockt generate_nondet_switch ( const irep_idt name_prefix,
const alternate_casest switch_cases,
const typet int_type,
const irep_idt mode,
const source_locationt source_location,
symbol_table_baset symbol_table 
)

Pick nondeterministically between imperative actions 'switch_cases'.

Parameters
name_prefixName prefix for fresh symbols (should be function id)
switch_casesList of codet objects to execute in each switch case.
int_typeThe type of the int used to non-deterministically choose one of the switch cases.
modeMode (language) of the symbol to be generated.
source_locationThe location to mark the generated int with.
symbol_tableThe global symbol table.
Returns
Returns a nondet-switch choosing between switch_cases. The resulting switch block has no default case.

Definition at line 87 of file nondet.cpp.

max_value
static mp_integer max_value(const typet &type)
Get max value for an integer type.
Definition: java_object_factory.cpp:522
nondet_int
int nondet_int()
ASSUME
@ ASSUME
Definition: goto_program.h:35