ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
converter_binop.cpp File Reference
Include dependency graph for converter_binop.cpp:

Functions

static bool has_side_effect (const exprt &e)
static exprt * find_subexpr (exprt &e, const exprt &what)
static exprt * find_normalised_subexpr (exprt &e, exprt &what)
static void type_untyped_nondet_operand (const std::string &op, exprt &lhs, exprt &rhs)
static exprt relational_nondet_fallback (const std::string &op, const exprt &lhs, const exprt &rhs, const locationt &loc)
static void attach_symbol_location (exprt &expr, contextt &symbol_table)
exprt handle_float_vs_string (exprt &bin_expr, const std::string &op)
static const nlohmann::json * arithmetic_range_operand (const exprt &x, const nlohmann::json &element)
 The range(...) call a membership test of x can evaluate arithmetically: x an integer variable or constant, at most three positional arguments, and no call in them (they are converted again).
static bool container_is_name (const nlohmann::json &element)
 True when the container of membership test element is a variable or attribute, the only list operand that can hold None.
static void reject_numpy_string_membership (const std::string &op, const exprt &rhs)
static bool contains_call (const nlohmann::json &node)
static bool is_in_bounds_constant_index (const exprt &expr)
static bool is_read_ahead_type (const typet &type)
static void reject_complex_array_arithmetic (const exprt &lhs, const exprt &rhs)
static exprt cast_to (const exprt &value, const typet &type)
static bool is_numeric_scalar_type (const typet &type)
static bool is_char_element (const typet &type)
static std::optional< std::vector< long long > > numeric_array_shape (const typet &type)
static const typet & leaf_type (const typet &type)
static typet shaped_type (const typet &leaf, const std::vector< long long > &shape)
static typet elementwise_result_type (const std::string &op, const typet &array_elem, const typet &lhs_elem, const typet &rhs_elem)
static const std::set< std::string > & bitwise_ops ()
static bool is_elementwise_op (const std::string &op)
static std::optional< std::vector< long long > > operand_shape (const typet &type)
static std::string shape_text (const std::vector< long long > &shape)
static std::optional< std::vector< long long > > broadcast_shapes (std::vector< long long > a, std::vector< long long > b)
static std::optional< std::pair< std::vector< long long >, std::vector< long long > > > elementwise_shapes (const std::string &op, const exprt &lhs, const exprt &rhs)
static std::size_t array_rank (const typet &type)
static std::string bitwise_ufunc (const std::string &op)
static std::vector< exprt > flat_elements (const exprt &operand)

Function Documentation

◆ arithmetic_range_operand()

const nlohmann::json * arithmetic_range_operand ( const exprt & x,
const nlohmann::json & element )
static

The range(...) call a membership test of x can evaluate arithmetically: x an integer variable or constant, at most three positional arguments, and no call in them (they are converted again).

Null otherwise.

◆ array_rank()

std::size_t array_rank ( const typet & type)
static

◆ attach_symbol_location()

void attach_symbol_location ( exprt & expr,
contextt & symbol_table )
static

◆ bitwise_ops()

const std::set< std::string > & bitwise_ops ( )
static

◆ bitwise_ufunc()

std::string bitwise_ufunc ( const std::string & op)
static

◆ broadcast_shapes()

std::optional< std::vector< long long > > broadcast_shapes ( std::vector< long long > a,
std::vector< long long > b )
static

◆ cast_to()

exprt cast_to ( const exprt & value,
const typet & type )
static

◆ container_is_name()

bool container_is_name ( const nlohmann::json & element)
static

True when the container of membership test element is a variable or attribute, the only list operand that can hold None.

◆ contains_call()

bool contains_call ( const nlohmann::json & node)
static

◆ elementwise_result_type()

typet elementwise_result_type ( const std::string & op,
const typet & array_elem,
const typet & lhs_elem,
const typet & rhs_elem )
static

◆ elementwise_shapes()

std::optional< std::pair< std::vector< long long >, std::vector< long long > > > elementwise_shapes ( const std::string & op,
const exprt & lhs,
const exprt & rhs )
static

◆ find_normalised_subexpr()

exprt * find_normalised_subexpr ( exprt & e,
exprt & what )
static

◆ find_subexpr()

exprt * find_subexpr ( exprt & e,
const exprt & what )
static

◆ flat_elements()

std::vector< exprt > flat_elements ( const exprt & operand)
static

◆ handle_float_vs_string()

exprt handle_float_vs_string ( exprt & bin_expr,
const std::string & op )

◆ has_side_effect()

bool has_side_effect ( const exprt & e)
static

◆ is_char_element()

bool is_char_element ( const typet & type)
static

◆ is_elementwise_op()

bool is_elementwise_op ( const std::string & op)
static

◆ is_in_bounds_constant_index()

bool is_in_bounds_constant_index ( const exprt & expr)
static

◆ is_numeric_scalar_type()

bool is_numeric_scalar_type ( const typet & type)
static

◆ is_read_ahead_type()

bool is_read_ahead_type ( const typet & type)
static

◆ leaf_type()

const typet & leaf_type ( const typet & type)
static

◆ numeric_array_shape()

std::optional< std::vector< long long > > numeric_array_shape ( const typet & type)
static

◆ operand_shape()

std::optional< std::vector< long long > > operand_shape ( const typet & type)
static

◆ reject_complex_array_arithmetic()

void reject_complex_array_arithmetic ( const exprt & lhs,
const exprt & rhs )
static

◆ reject_numpy_string_membership()

void reject_numpy_string_membership ( const std::string & op,
const exprt & rhs )
static

◆ relational_nondet_fallback()

exprt relational_nondet_fallback ( const std::string & op,
const exprt & lhs,
const exprt & rhs,
const locationt & loc )
static

◆ shape_text()

std::string shape_text ( const std::vector< long long > & shape)
static

◆ shaped_type()

typet shaped_type ( const typet & leaf,
const std::vector< long long > & shape )
static

◆ type_untyped_nondet_operand()

void type_untyped_nondet_operand ( const std::string & op,
exprt & lhs,
exprt & rhs )
static