cprover
boolbvt Class Reference

#include <boolbv.h>

+ Inheritance diagram for boolbvt:
+ Collaboration diagram for boolbvt:

Classes

class  quantifiert
 

Public Types

enum  unbounded_arrayt { unbounded_arrayt::U_NONE, unbounded_arrayt::U_ALL, unbounded_arrayt::U_AUTO }
 
- Public Types inherited from arrayst
typedef equalityt SUB
 
- Public Types inherited from prop_conv_solvert
typedef std::map< irep_idt, literaltsymbolst
 
typedef std::unordered_map< exprt, literalt, irep_hashcachet
 
- Public Types inherited from decision_proceduret
enum  resultt { resultt::D_SATISFIABLE, resultt::D_UNSATISFIABLE, resultt::D_ERROR }
 Result of running the decision procedure. More...
 

Public Member Functions

 boolbvt (const namespacet &_ns, propt &_prop, message_handlert &message_handler)
 
virtual const bvtconvert_bv (const exprt &expr, const optionalt< std::size_t > expected_width=nullopt)
 Convert expression to vector of literalts, using an internal cache to speed up conversion if available. More...
 
virtual bvt convert_bitvector (const exprt &expr)
 Converts an expression into its gate-level representation and returns a vector of literals corresponding to the outputs of the Boolean circuit. More...
 
exprt get (const exprt &expr) const override
 Return expr with variables replaced by values from satisfying assignment if available. More...
 
void set_to (const exprt &expr, bool value) override
 For a Boolean expression expr, add the constraint 'expr' if value is true, otherwise add 'not expr'. More...
 
void print_assignment (std::ostream &out) const override
 Print satisfying assignment to out. More...
 
void clear_cache () override
 
void post_process () override
 
virtual bool literal (const exprt &expr, std::size_t bit, literalt &literal) const
 
mp_integer get_value (const bvt &bv)
 
mp_integer get_value (const bvt &bv, std::size_t offset, std::size_t width)
 
const boolbv_maptget_map () const
 
- Public Member Functions inherited from arrayst
 arrayst (const namespacet &_ns, propt &_prop, message_handlert &message_handler)
 
literalt record_array_equality (const equal_exprt &expr)
 
void record_array_index (const index_exprt &expr)
 
- Public Member Functions inherited from equalityt
 equalityt (propt &_prop, message_handlert &message_handler)
 
virtual literalt equality (const exprt &e1, const exprt &e2)
 
void post_process () override
 
- Public Member Functions inherited from prop_conv_solvert
 prop_conv_solvert (propt &_prop, message_handlert &message_handler)
 
virtual ~prop_conv_solvert ()=default
 
decision_proceduret::resultt dec_solve () override
 Run the decision procedure to solve the problem. More...
 
void print_assignment (std::ostream &out) const override
 Print satisfying assignment to out. More...
 
std::string decision_procedure_text () const override
 Return a textual description of the decision procedure. More...
 
exprt get (const exprt &expr) const override
 Return expr with variables replaced by values from satisfying assignment if available. More...
 
tvt l_get (literalt a) const override
 Return value of literal l from satisfying assignment. More...
 
exprt handle (const exprt &expr) override
 Generate a handle, which is an expression that has the same value as the argument in any model that is generated; this offers an efficient way to refer to the expression in subsequent calls to get or set_to. More...
 
void set_frozen (literalt)
 
void set_frozen (const bvt &)
 
void set_all_frozen ()
 
literalt convert (const exprt &expr) override
 Convert a Boolean expression and return the corresponding literal. More...
 
bool is_in_conflict (const exprt &expr) const override
 Returns true if an expression is in the final conflict leading to UNSAT. More...
 
void set_to (const exprt &expr, bool value) override
 For a Boolean expression expr, add the constraint 'current_context => expr' if value is true, otherwise add 'current_context => not expr'. More...
 
void push () override
 Push a new context on the stack This context becomes a child context nested in the current context. More...
 
void push (const std::vector< exprt > &assumptions) override
 Push assumptions in form of literal_exprt More...
 
void pop () override
 Pop whatever is on top of the stack. More...
 
bool literal (const symbol_exprt &expr, literalt &literal) const
 
const cachetget_cache () const
 
const symbolstget_symbols () const
 
void set_time_limit_seconds (uint32_t lim) override
 Set the limit for the solver to time out in seconds. More...
 
std::size_t get_number_of_solver_calls () const override
 Return the number of incremental solver calls. More...
 
- Public Member Functions inherited from conflict_providert
virtual ~conflict_providert ()=default
 
- Public Member Functions inherited from prop_convt
virtual ~prop_convt ()
 
- Public Member Functions inherited from stack_decision_proceduret
virtual ~stack_decision_proceduret ()=default
 
- Public Member Functions inherited from decision_proceduret
void set_to_true (const exprt &expr)
 For a Boolean expression expr, add the constraint 'expr'. More...
 
void set_to_false (const exprt &expr)
 For a Boolean expression expr, add the constraint 'not expr'. More...
 
resultt operator() ()
 Run the decision procedure to solve the problem. More...
 
virtual ~decision_proceduret ()
 
- Public Member Functions inherited from solver_resource_limitst
virtual ~solver_resource_limitst ()=default
 

Public Attributes

unbounded_arrayt unbounded_array
 
boolbv_widtht boolbv_width
 
- Public Attributes inherited from prop_conv_solvert
bool use_cache = true
 
bool equality_propagation = true
 
bool freeze_all = false
 

Protected Types

typedef arrayst SUB
 
typedef std::unordered_map< const exprt, bvt, irep_hashbv_cachet
 
typedef std::list< quantifiertquantifier_listt
 
typedef std::vector< std::size_t > offset_mapt
 
- Protected Types inherited from arrayst
enum  lazy_typet {
  lazy_typet::ARRAY_ACKERMANN, lazy_typet::ARRAY_WITH, lazy_typet::ARRAY_IF, lazy_typet::ARRAY_OF,
  lazy_typet::ARRAY_TYPECAST, lazy_typet::ARRAY_CONSTANT
}
 
typedef std::list< array_equalitytarray_equalitiest
 
typedef std::set< exprtindex_sett
 
typedef std::map< std::size_t, index_settindex_mapt
 
- Protected Types inherited from equalityt
typedef std::unordered_map< const exprt, unsigned, irep_hashelementst
 
typedef std::map< std::pair< unsigned, unsigned >, literaltequalitiest
 
typedef std::map< unsigned, exprtelements_revt
 
typedef std::unordered_map< const typet, typestructt, irep_hashtypemapt
 

Protected Member Functions

literalt convert_rest (const exprt &expr) override
 
virtual bool boolbv_set_equality_to_true (const equal_exprt &expr)
 
void conversion_failed (const exprt &expr, bvt &bv)
 
bvt conversion_failed (const exprt &expr)
 Print that the expression of x has failed conversion, then return a vector of x's width. More...
 
bool type_conversion (const typet &src_type, const bvt &src, const typet &dest_type, bvt &dest)
 
virtual literalt convert_bv_rel (const exprt &expr)
 Flatten <, >, <= and >= expressions. More...
 
virtual literalt convert_typecast (const typecast_exprt &expr)
 conversion from bitvector types to boolean More...
 
virtual literalt convert_reduction (const unary_exprt &expr)
 
virtual literalt convert_onehot (const unary_exprt &expr)
 
virtual literalt convert_extractbit (const extractbit_exprt &expr)
 
virtual literalt convert_overflow (const exprt &expr)
 
virtual literalt convert_equality (const equal_exprt &expr)
 
virtual literalt convert_verilog_case_equality (const binary_relation_exprt &expr)
 
virtual literalt convert_ieee_float_rel (const exprt &expr)
 
virtual literalt convert_quantifier (const quantifier_exprt &expr)
 
virtual bvt convert_index (const exprt &array, const mp_integer &index)
 index operator with constant index More...
 
virtual bvt convert_index (const index_exprt &expr)
 
virtual bvt convert_bswap (const bswap_exprt &expr)
 
virtual bvt convert_byte_extract (const byte_extract_exprt &expr)
 
virtual bvt convert_byte_update (const byte_update_exprt &expr)
 
virtual bvt convert_constraint_select_one (const exprt &expr)
 
virtual bvt convert_if (const if_exprt &expr)
 
virtual bvt convert_struct (const struct_exprt &expr)
 
virtual bvt convert_array (const exprt &expr)
 Flatten array. More...
 
virtual bvt convert_vector (const vector_exprt &expr)
 
virtual bvt convert_complex (const complex_exprt &expr)
 
virtual bvt convert_complex_real (const complex_real_exprt &expr)
 
virtual bvt convert_complex_imag (const complex_imag_exprt &expr)
 
virtual bvt convert_lambda (const lambda_exprt &expr)
 
virtual bvt convert_let (const let_exprt &)
 
virtual bvt convert_array_of (const array_of_exprt &expr)
 Flatten arrays constructed from a single element. More...
 
virtual bvt convert_union (const union_exprt &expr)
 
virtual bvt convert_bv_typecast (const typecast_exprt &expr)
 
virtual bvt convert_add_sub (const exprt &expr)
 
virtual bvt convert_mult (const mult_exprt &expr)
 
virtual bvt convert_div (const div_exprt &expr)
 
virtual bvt convert_mod (const mod_exprt &expr)
 
virtual bvt convert_floatbv_op (const exprt &expr)
 
virtual bvt convert_floatbv_typecast (const floatbv_typecast_exprt &expr)
 
virtual bvt convert_member (const member_exprt &expr)
 
virtual bvt convert_with (const with_exprt &expr)
 
virtual bvt convert_update (const exprt &expr)
 
virtual bvt convert_case (const exprt &expr)
 
virtual bvt convert_cond (const cond_exprt &)
 
virtual bvt convert_shift (const binary_exprt &expr)
 
virtual bvt convert_bitwise (const exprt &expr)
 
virtual bvt convert_unary_minus (const unary_minus_exprt &expr)
 
virtual bvt convert_abs (const abs_exprt &expr)
 
virtual bvt convert_concatenation (const concatenation_exprt &expr)
 
virtual bvt convert_replication (const replication_exprt &expr)
 
virtual bvt convert_bv_literals (const exprt &expr)
 
virtual bvt convert_constant (const constant_exprt &expr)
 
virtual bvt convert_extractbits (const extractbits_exprt &expr)
 
virtual bvt convert_symbol (const exprt &expr)
 
virtual bvt convert_bv_reduction (const unary_exprt &expr)
 
virtual bvt convert_not (const not_exprt &expr)
 
virtual bvt convert_power (const binary_exprt &expr)
 
virtual bvt convert_function_application (const function_application_exprt &expr)
 
virtual exprt make_bv_expr (const typet &type, const bvt &bv)
 
virtual exprt make_free_bv_expr (const typet &type)
 
void convert_with (const typet &type, const exprt &op1, const exprt &op2, const bvt &prev_bv, bvt &next_bv)
 
void convert_with_bv (const exprt &op1, const exprt &op2, const bvt &prev_bv, bvt &next_bv)
 
void convert_with_array (const array_typet &type, const exprt &op1, const exprt &op2, const bvt &prev_bv, bvt &next_bv)
 
void convert_with_union (const union_typet &type, const exprt &op2, const bvt &prev_bv, bvt &next_bv)
 
void convert_with_struct (const struct_typet &type, const exprt &op1, const exprt &op2, const bvt &prev_bv, bvt &next_bv)
 
void convert_update_rec (const exprt::operandst &designator, std::size_t d, const typet &type, std::size_t offset, const exprt &new_value, bvt &bv)
 
virtual exprt bv_get_unbounded_array (const exprt &) const
 
virtual exprt bv_get_rec (const exprt &expr, const bvt &bv, const std::vector< bool > &unknown, std::size_t offset, const typet &type) const
 
exprt bv_get (const bvt &bv, const typet &type) const
 
exprt bv_get_cache (const exprt &expr) const
 
bool is_unbounded_array (const typet &type) const override
 
void post_process_quantifiers ()
 
offset_mapt build_offset_map (const struct_typet &src)
 
- Protected Member Functions inherited from arrayst
virtual void post_process_arrays ()
 
void add_array_constraint (const lazy_constraintt &lazy, bool refine=true)
 adds array constraints (refine=true...lazily for the refinement loop) More...
 
void add_array_constraints ()
 
void add_array_Ackermann_constraints ()
 
void add_array_constraints_equality (const index_sett &index_set, const array_equalityt &array_equality)
 
void add_array_constraints (const index_sett &index_set, const exprt &expr)
 
void add_array_constraints_if (const index_sett &index_set, const if_exprt &exprt)
 
void add_array_constraints_with (const index_sett &index_set, const with_exprt &expr)
 
void add_array_constraints_update (const index_sett &index_set, const update_exprt &expr)
 
void add_array_constraints_array_of (const index_sett &index_set, const array_of_exprt &exprt)
 
void add_array_constraints_array_constant (const index_sett &index_set, const array_exprt &exprt)
 
void update_index_map (bool update_all)
 
void update_index_map (std::size_t i)
 merge the indices into the root More...
 
void collect_arrays (const exprt &a)
 
void collect_indices ()
 
void collect_indices (const exprt &a)
 
- Protected Member Functions inherited from equalityt
virtual literalt equality2 (const exprt &e1, const exprt &e2)
 
virtual void add_equality_constraints ()
 
virtual void add_equality_constraints (const typestructt &typestruct)
 
- Protected Member Functions inherited from prop_conv_solvert
virtual optionalt< bool > get_bool (const exprt &expr) const
 Get a boolean value from the model if the formula is satisfiable. More...
 
virtual literalt convert_bool (const exprt &expr)
 
virtual bool set_equality_to_true (const equal_exprt &expr)
 
virtual literalt get_literal (const irep_idt &symbol)
 
virtual void ignoring (const exprt &expr)
 

Protected Attributes

bv_utilst bv_utils
 
functionst functions
 
boolbv_mapt map
 
bv_cachet bv_cache
 
quantifier_listt quantifier_list
 
numbering< irep_idtstring_numbering
 
- Protected Attributes inherited from arrayst
const namespacetns
 
array_equalitiest array_equalities
 
union_find< exprtarrays
 
index_mapt index_map
 
bool lazy_arrays
 
bool incremental_cache
 
std::list< lazy_constrainttlazy_array_constraints
 
std::map< exprt, bool > expr_map
 
std::set< std::size_t > update_indices
 
- Protected Attributes inherited from equalityt
typemapt typemap
 
- Protected Attributes inherited from prop_conv_solvert
bool post_processing_done = false
 
symbolst symbols
 
cachet cache
 
proptprop
 
messaget log
 
bvt assumption_stack
 Assumptions on the stack. More...
 
std::size_t context_literal_counter = 0
 To generate unique literal names for contexts. More...
 
std::vector< size_t > context_size_stack
 assumption_stack is segmented in contexts; Number of assumptions in each context on the stack More...
 

Additional Inherited Members

- Static Protected Attributes inherited from prop_conv_solvert
static const char * context_prefix = "prop_conv::context$"
 

Detailed Description

Definition at line 34 of file boolbv.h.

Member Typedef Documentation

◆ bv_cachet

typedef std::unordered_map<const exprt, bvt, irep_hash> boolbvt::bv_cachet
protected

Definition at line 120 of file boolbv.h.

◆ offset_mapt

typedef std::vector<std::size_t> boolbvt::offset_mapt
protected

Definition at line 261 of file boolbv.h.

◆ quantifier_listt

typedef std::list<quantifiert> boolbvt::quantifier_listt
protected

Definition at line 256 of file boolbv.h.

◆ SUB

typedef arrayst boolbvt::SUB
protected

Definition at line 111 of file boolbv.h.

Member Enumeration Documentation

◆ unbounded_arrayt

Enumerator
U_NONE 
U_ALL 
U_AUTO 

Definition at line 80 of file boolbv.h.

Constructor & Destructor Documentation

◆ boolbvt()

boolbvt::boolbvt ( const namespacet _ns,
propt _prop,
message_handlert message_handler 
)
inline

Definition at line 37 of file boolbv.h.

Member Function Documentation

◆ boolbv_set_equality_to_true()

bool boolbvt::boolbv_set_equality_to_true ( const equal_exprt expr)
protectedvirtual

Definition at line 564 of file boolbv.cpp.

◆ build_offset_map()

boolbvt::offset_mapt boolbvt::build_offset_map ( const struct_typet src)
protected

Definition at line 654 of file boolbv.cpp.

◆ bv_get()

exprt boolbvt::bv_get ( const bvt bv,
const typet type 
) const
protected

Definition at line 298 of file boolbv_get.cpp.

◆ bv_get_cache()

exprt boolbvt::bv_get_cache ( const exprt expr) const
protected

Definition at line 305 of file boolbv_get.cpp.

◆ bv_get_rec()

exprt boolbvt::bv_get_rec ( const exprt expr,
const bvt bv,
const std::vector< bool > &  unknown,
std::size_t  offset,
const typet type 
) const
protectedvirtual

Reimplemented in bv_pointerst.

Definition at line 71 of file boolbv_get.cpp.

◆ bv_get_unbounded_array()

exprt boolbvt::bv_get_unbounded_array ( const exprt expr) const
protectedvirtual

Definition at line 317 of file boolbv_get.cpp.

◆ clear_cache()

void boolbvt::clear_cache ( )
inlineoverridevirtual

Reimplemented from prop_conv_solvert.

Definition at line 61 of file boolbv.h.

◆ conversion_failed() [1/2]

void boolbvt::conversion_failed ( const exprt expr,
bvt bv 
)
inlineprotected

Definition at line 113 of file boolbv.h.

◆ conversion_failed() [2/2]

bvt boolbvt::conversion_failed ( const exprt expr)
protected

Print that the expression of x has failed conversion, then return a vector of x's width.

Definition at line 160 of file boolbv.cpp.

◆ convert_abs()

bvt boolbvt::convert_abs ( const abs_exprt expr)
protectedvirtual

Definition at line 17 of file boolbv_abs.cpp.

◆ convert_add_sub()

bvt boolbvt::convert_add_sub ( const exprt expr)
protectedvirtual

Definition at line 16 of file boolbv_add_sub.cpp.

◆ convert_array()

bvt boolbvt::convert_array ( const exprt expr)
protectedvirtual

Flatten array.

Loop over each element and convert them in turn, limiting each result's width to initial array bit size divided by number of elements. Return an empty vector if the width is zero or the array has no elements.

Definition at line 16 of file boolbv_array.cpp.

◆ convert_array_of()

bvt boolbvt::convert_array_of ( const array_of_exprt expr)
protectedvirtual

Flatten arrays constructed from a single element.

Definition at line 16 of file boolbv_array_of.cpp.

◆ convert_bitvector()

bvt boolbvt::convert_bitvector ( const exprt expr)
virtual

Converts an expression into its gate-level representation and returns a vector of literals corresponding to the outputs of the Boolean circuit.

Parameters
exprExpression to convert
Returns
A vector of literals corresponding to the outputs of the Boolean circuit
Exceptions
bitvector_conversion_exceptiontraised if converting byte_extraction goes wrong. TODO: extend for other types of conversion exception (diffblue/cbmc#2103).

Reimplemented in bv_pointerst.

Definition at line 177 of file boolbv.cpp.

◆ convert_bitwise()

bvt boolbvt::convert_bitwise ( const exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_bitwise.cpp.

◆ convert_bswap()

bvt boolbvt::convert_bswap ( const bswap_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_bswap.cpp.

◆ convert_bv()

const bvt & boolbvt::convert_bv ( const exprt expr,
const optionalt< std::size_t >  expected_width = nullopt 
)
virtual

Convert expression to vector of literalts, using an internal cache to speed up conversion if available.

Also assert the resultant vector is of a specific size, and freeze any elements if appropriate.

Definition at line 119 of file boolbv.cpp.

◆ convert_bv_literals()

bvt boolbvt::convert_bv_literals ( const exprt expr)
protectedvirtual

Definition at line 361 of file boolbv.cpp.

◆ convert_bv_reduction()

bvt boolbvt::convert_bv_reduction ( const unary_exprt expr)
protectedvirtual

Definition at line 53 of file boolbv_reduction.cpp.

◆ convert_bv_rel()

literalt boolbvt::convert_bv_rel ( const exprt expr)
protectedvirtual

Flatten <, >, <= and >= expressions.

Definition at line 18 of file boolbv_bv_rel.cpp.

◆ convert_bv_typecast()

bvt boolbvt::convert_bv_typecast ( const typecast_exprt expr)
protectedvirtual

Definition at line 20 of file boolbv_typecast.cpp.

◆ convert_byte_extract()

bvt boolbvt::convert_byte_extract ( const byte_extract_exprt expr)
protectedvirtual

Definition at line 42 of file boolbv_byte_extract.cpp.

◆ convert_byte_update()

bvt boolbvt::convert_byte_update ( const byte_update_exprt expr)
protectedvirtual

Definition at line 23 of file boolbv_byte_update.cpp.

◆ convert_case()

bvt boolbvt::convert_case ( const exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_case.cpp.

◆ convert_complex()

bvt boolbvt::convert_complex ( const complex_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_complex.cpp.

◆ convert_complex_imag()

bvt boolbvt::convert_complex_imag ( const complex_imag_exprt expr)
protectedvirtual

Definition at line 55 of file boolbv_complex.cpp.

◆ convert_complex_real()

bvt boolbvt::convert_complex_real ( const complex_real_exprt expr)
protectedvirtual

Definition at line 41 of file boolbv_complex.cpp.

◆ convert_concatenation()

bvt boolbvt::convert_concatenation ( const concatenation_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_concatenation.cpp.

◆ convert_cond()

bvt boolbvt::convert_cond ( const cond_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_cond.cpp.

◆ convert_constant()

bvt boolbvt::convert_constant ( const constant_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_constant.cpp.

◆ convert_constraint_select_one()

bvt boolbvt::convert_constraint_select_one ( const exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_constraint_select_one.cpp.

◆ convert_div()

bvt boolbvt::convert_div ( const div_exprt expr)
protectedvirtual

Reimplemented in bv_refinementt.

Definition at line 13 of file boolbv_div.cpp.

◆ convert_equality()

literalt boolbvt::convert_equality ( const equal_exprt expr)
protectedvirtual

Definition at line 18 of file boolbv_equality.cpp.

◆ convert_extractbit()

literalt boolbvt::convert_extractbit ( const extractbit_exprt expr)
protectedvirtual

Definition at line 19 of file boolbv_extractbit.cpp.

◆ convert_extractbits()

bvt boolbvt::convert_extractbits ( const extractbits_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_extractbits.cpp.

◆ convert_floatbv_op()

bvt boolbvt::convert_floatbv_op ( const exprt expr)
protectedvirtual

Reimplemented in bv_refinementt.

Definition at line 82 of file boolbv_floatbv_op.cpp.

◆ convert_floatbv_typecast()

bvt boolbvt::convert_floatbv_typecast ( const floatbv_typecast_exprt expr)
protectedvirtual

Definition at line 18 of file boolbv_floatbv_op.cpp.

◆ convert_function_application()

bvt boolbvt::convert_function_application ( const function_application_exprt expr)
protectedvirtual

Definition at line 417 of file boolbv.cpp.

◆ convert_ieee_float_rel()

literalt boolbvt::convert_ieee_float_rel ( const exprt expr)
protectedvirtual

Definition at line 17 of file boolbv_ieee_float_rel.cpp.

◆ convert_if()

bvt boolbvt::convert_if ( const if_exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_if.cpp.

◆ convert_index() [1/2]

bvt boolbvt::convert_index ( const exprt array,
const mp_integer index 
)
protectedvirtual

index operator with constant index

Definition at line 277 of file boolbv_index.cpp.

◆ convert_index() [2/2]

bvt boolbvt::convert_index ( const index_exprt expr)
protectedvirtual

Definition at line 21 of file boolbv_index.cpp.

◆ convert_lambda()

bvt boolbvt::convert_lambda ( const lambda_exprt expr)
protectedvirtual

Definition at line 319 of file boolbv.cpp.

◆ convert_let()

bvt boolbvt::convert_let ( const let_exprt expr)
protectedvirtual

Definition at line 14 of file boolbv_let.cpp.

◆ convert_member()

bvt boolbvt::convert_member ( const member_exprt expr)
protectedvirtual

Definition at line 11 of file boolbv_member.cpp.

◆ convert_mod()

bvt boolbvt::convert_mod ( const mod_exprt expr)
protectedvirtual

Reimplemented in bv_refinementt.

Definition at line 12 of file boolbv_mod.cpp.

◆ convert_mult()

bvt boolbvt::convert_mult ( const mult_exprt expr)
protectedvirtual

Reimplemented in bv_refinementt.

Definition at line 13 of file boolbv_mult.cpp.

◆ convert_not()

bvt boolbvt::convert_not ( const not_exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_not.cpp.

◆ convert_onehot()

literalt boolbvt::convert_onehot ( const unary_exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_onehot.cpp.

◆ convert_overflow()

literalt boolbvt::convert_overflow ( const exprt expr)
protectedvirtual

Definition at line 15 of file boolbv_overflow.cpp.

◆ convert_power()

bvt boolbvt::convert_power ( const binary_exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_power.cpp.

◆ convert_quantifier()

literalt boolbvt::convert_quantifier ( const quantifier_exprt expr)
protectedvirtual

Definition at line 202 of file boolbv_quantifier.cpp.

◆ convert_reduction()

literalt boolbvt::convert_reduction ( const unary_exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_reduction.cpp.

◆ convert_replication()

bvt boolbvt::convert_replication ( const replication_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_replication.cpp.

◆ convert_rest()

literalt boolbvt::convert_rest ( const exprt expr)
overrideprotectedvirtual

Reimplemented from prop_conv_solvert.

Reimplemented in bv_pointerst.

Definition at line 428 of file boolbv.cpp.

◆ convert_shift()

bvt boolbvt::convert_shift ( const binary_exprt expr)
protectedvirtual

Definition at line 15 of file boolbv_shift.cpp.

◆ convert_struct()

bvt boolbvt::convert_struct ( const struct_exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_struct.cpp.

◆ convert_symbol()

bvt boolbvt::convert_symbol ( const exprt expr)
protectedvirtual

Definition at line 382 of file boolbv.cpp.

◆ convert_typecast()

literalt boolbvt::convert_typecast ( const typecast_exprt expr)
protectedvirtual

conversion from bitvector types to boolean

Definition at line 614 of file boolbv_typecast.cpp.

◆ convert_unary_minus()

bvt boolbvt::convert_unary_minus ( const unary_minus_exprt expr)
protectedvirtual

Definition at line 20 of file boolbv_unary_minus.cpp.

◆ convert_union()

bvt boolbvt::convert_union ( const union_exprt expr)
protectedvirtual

Definition at line 16 of file boolbv_union.cpp.

◆ convert_update()

bvt boolbvt::convert_update ( const exprt expr)
protectedvirtual

Definition at line 13 of file boolbv_update.cpp.

◆ convert_update_rec()

void boolbvt::convert_update_rec ( const exprt::operandst designator,
std::size_t  d,
const typet type,
std::size_t  offset,
const exprt new_value,
bvt bv 
)
protected

Definition at line 37 of file boolbv_update.cpp.

◆ convert_vector()

bvt boolbvt::convert_vector ( const vector_exprt expr)
protectedvirtual

Definition at line 12 of file boolbv_vector.cpp.

◆ convert_verilog_case_equality()

literalt boolbvt::convert_verilog_case_equality ( const binary_relation_exprt expr)
protectedvirtual

Definition at line 62 of file boolbv_equality.cpp.

◆ convert_with() [1/2]

bvt boolbvt::convert_with ( const with_exprt expr)
protectedvirtual

Definition at line 18 of file boolbv_with.cpp.

◆ convert_with() [2/2]

void boolbvt::convert_with ( const typet type,
const exprt op1,
const exprt op2,
const bvt prev_bv,
bvt next_bv 
)
protected

Definition at line 53 of file boolbv_with.cpp.

◆ convert_with_array()

void boolbvt::convert_with_array ( const array_typet type,
const exprt op1,
const exprt op2,
const bvt prev_bv,
bvt next_bv 
)
protected

Definition at line 86 of file boolbv_with.cpp.

◆ convert_with_bv()

void boolbvt::convert_with_bv ( const exprt op1,
const exprt op2,
const bvt prev_bv,
bvt next_bv 
)
protected

Definition at line 149 of file boolbv_with.cpp.

◆ convert_with_struct()

void boolbvt::convert_with_struct ( const struct_typet type,
const exprt op1,
const exprt op2,
const bvt prev_bv,
bvt next_bv 
)
protected

Definition at line 179 of file boolbv_with.cpp.

◆ convert_with_union()

void boolbvt::convert_with_union ( const union_typet type,
const exprt op2,
const bvt prev_bv,
bvt next_bv 
)
protected

Definition at line 226 of file boolbv_with.cpp.

◆ get()

exprt boolbvt::get ( const exprt expr) const
overridevirtual

Return expr with variables replaced by values from satisfying assignment if available.

Return nil if not available

Implements decision_proceduret.

Reimplemented in string_refinementt.

Definition at line 22 of file boolbv_get.cpp.

◆ get_map()

const boolbv_mapt& boolbvt::get_map ( ) const
inline

Definition at line 90 of file boolbv.h.

◆ get_value() [1/2]

mp_integer boolbvt::get_value ( const bvt bv)
inline

Definition at line 83 of file boolbv.h.

◆ get_value() [2/2]

mp_integer boolbvt::get_value ( const bvt bv,
std::size_t  offset,
std::size_t  width 
)

Definition at line 414 of file boolbv_get.cpp.

◆ is_unbounded_array()

bool boolbvt::is_unbounded_array ( const typet type) const
overrideprotectedvirtual

Implements arrayst.

Definition at line 626 of file boolbv.cpp.

◆ literal()

bool boolbvt::literal ( const exprt expr,
std::size_t  bit,
literalt literal 
) const
virtual

Definition at line 32 of file boolbv.cpp.

◆ make_bv_expr()

exprt boolbvt::make_bv_expr ( const typet type,
const bvt bv 
)
protectedvirtual

Definition at line 605 of file boolbv.cpp.

◆ make_free_bv_expr()

exprt boolbvt::make_free_bv_expr ( const typet type)
protectedvirtual

Definition at line 616 of file boolbv.cpp.

◆ post_process()

void boolbvt::post_process ( )
inlineoverridevirtual

Reimplemented from arrayst.

Reimplemented in bv_pointerst.

Definition at line 67 of file boolbv.h.

◆ post_process_quantifiers()

void boolbvt::post_process_quantifiers ( )
protected

Definition at line 217 of file boolbv_quantifier.cpp.

◆ print_assignment()

void boolbvt::print_assignment ( std::ostream &  out) const
overridevirtual

Print satisfying assignment to out.

Implements decision_proceduret.

Definition at line 647 of file boolbv.cpp.

◆ set_to()

void boolbvt::set_to ( const exprt expr,
bool  value 
)
overridevirtual

For a Boolean expression expr, add the constraint 'expr' if value is true, otherwise add 'not expr'.

Implements decision_proceduret.

Reimplemented in string_refinementt.

Definition at line 595 of file boolbv.cpp.

◆ type_conversion()

bool boolbvt::type_conversion ( const typet src_type,
const bvt src,
const typet dest_type,
bvt dest 
)
protected

Definition at line 33 of file boolbv_typecast.cpp.

Member Data Documentation

◆ boolbv_width

boolbv_widtht boolbvt::boolbv_width

Definition at line 95 of file boolbv.h.

◆ bv_cache

bv_cachet boolbvt::bv_cache
protected

Definition at line 121 of file boolbv.h.

◆ bv_utils

bv_utilst boolbvt::bv_utils
protected

Definition at line 98 of file boolbv.h.

◆ functions

functionst boolbvt::functions
protected

Definition at line 101 of file boolbv.h.

◆ map

boolbv_mapt boolbvt::map
protected

Definition at line 104 of file boolbv.h.

◆ quantifier_list

quantifier_listt boolbvt::quantifier_list
protected

Definition at line 257 of file boolbv.h.

◆ string_numbering

numbering<irep_idt> boolbvt::string_numbering
protected

Definition at line 265 of file boolbv.h.

◆ unbounded_array

unbounded_arrayt boolbvt::unbounded_array

Definition at line 81 of file boolbv.h.


The documentation for this class was generated from the following files: