CBMC
|
#include <constant_abstract_value.h>
Protected Member Functions | |
internal_abstract_object_pointert | mutable_clone () const override |
abstract_object_pointert | merge_with_value (const abstract_value_pointert &other, const widen_modet &widen_mode) const override |
Merges another abstract value into this one. | |
abstract_object_pointert | meet_with_value (const abstract_value_pointert &other) const override |
exprt | to_predicate_internal (const exprt &name) const override |
to_predicate implementation - derived classes will override | |
![]() | |
abstract_object_pointert | merge (const abstract_object_pointert &other, const widen_modet &widen_mode) const final |
Attempts to do a value/value merge if both are constants, otherwise falls back to the parent merge. | |
abstract_object_pointert | meet (const abstract_object_pointert &other) const final |
Base implementation of the meet operation: only used if no more precise abstraction can be used, can only result in {TOP, BOTTOM, one of the original objects}. | |
sharing_ptrt< const abstract_value_objectt > | as_value (const abstract_object_pointert &obj) const |
![]() | |
abstract_object_pointert | abstract_object_merge (const abstract_object_pointert &other) const |
Create a new abstract object that is the result of the merge, unless the object would be unchanged, then would return itself. | |
bool | should_use_base_merge (const abstract_object_pointert &other) const |
To detect the cases where the base merge is sufficient to do a merge We can't do if this->is_bottom() since we want the specific. | |
abstract_object_pointert | abstract_object_meet (const abstract_object_pointert &other) const |
Helper function for base meet. | |
bool | should_use_base_meet (const abstract_object_pointert &other) const |
Helper function to decide if base meet implementation should be used. | |
void | set_top () |
void | set_not_top () |
void | set_not_bottom () |
Private Attributes | |
exprt | value |
Definition at line 19 of file constant_abstract_value.h.
Definition at line 40 of file constant_abstract_value.cpp.
Definition at line 45 of file constant_abstract_value.cpp.
constant_abstract_valuet::constant_abstract_valuet | ( | const exprt & | e, |
const abstract_environmentt & | environment, | ||
const namespacet & | ns | ||
) |
Definition at line 53 of file constant_abstract_value.cpp.
|
overridedefault |
|
overridevirtual |
Implements abstract_value_objectt.
Definition at line 135 of file constant_abstract_value.cpp.
|
overridevirtual |
Reimplemented from abstract_objectt.
Definition at line 147 of file constant_abstract_value.cpp.
|
overridevirtual |
Implements abstract_value_objectt.
Definition at line 62 of file constant_abstract_value.cpp.
|
inlineoverridevirtual |
Reimplemented from abstract_objectt.
Definition at line 58 of file constant_abstract_value.h.
|
inlineoverridevirtual |
Reimplemented from abstract_objectt.
Definition at line 53 of file constant_abstract_value.h.
|
overrideprotectedvirtual |
Implements abstract_value_objectt.
Definition at line 123 of file constant_abstract_value.cpp.
|
overrideprotectedvirtual |
Merges another abstract value into this one.
other | the abstract object to merge with |
widen_mode | Indicates if this is a widening merge |
Implements abstract_value_objectt.
Definition at line 109 of file constant_abstract_value.cpp.
|
inlineoverrideprotectedvirtual |
Reimplemented from abstract_objectt.
Definition at line 66 of file constant_abstract_value.h.
|
override |
Definition at line 94 of file constant_abstract_value.cpp.
|
overridevirtual |
Converts to a constant expression if possible.
If abstract element represents a single value, then that value, otherwise nil. E.G. if it is an interval then this will be x if it is [x,x] This is the (sort of) dual to the constant_exprt constructor that allows an object to be built from a value.
Reimplemented from abstract_objectt.
Definition at line 77 of file constant_abstract_value.cpp.
|
overridevirtual |
Implements abstract_value_objectt.
Definition at line 89 of file constant_abstract_value.cpp.
|
overrideprotectedvirtual |
to_predicate implementation - derived classes will override
name | - the variable name to substitute into the expression |
Reimplemented from abstract_objectt.
Definition at line 142 of file constant_abstract_value.cpp.
|
overridevirtual |
Implements abstract_value_objectt.
Definition at line 72 of file constant_abstract_value.cpp.
|
private |
Definition at line 86 of file constant_abstract_value.h.