cprover
nondet.h File Reference
#include <util/std_code.h>
#include <util/std_expr.h>
#include <util/symbol_table.h>
+ Include dependency graph for nondet.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef std::vector< codetalternate_casest
 

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...
 

Typedef Documentation

◆ alternate_casest

typedef std::vector<codet> alternate_casest

Definition at line 26 of file nondet.h.

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.