cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
simplify_expr_with_value_set.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Variant of simplify_exprt that uses a value_sett
4
5
Author: Michael Tautschnig
6
7
\*******************************************************************/
8
9
#ifndef CPROVER_GOTO_SYMEX_SIMPLIFY_EXPR_WITH_VALUE_SET_H
10
#define CPROVER_GOTO_SYMEX_SIMPLIFY_EXPR_WITH_VALUE_SET_H
11
12
#include <
util/simplify_expr_class.h
>
13
14
class
value_sett
;
15
16
class
simplify_expr_with_value_sett
:
public
simplify_exprt
17
{
18
public
:
19
simplify_expr_with_value_sett
(
20
const
value_sett
&_vs,
21
const
irep_idt
&_mode,
22
const
namespacet
&_ns)
23
:
simplify_exprt
(_ns),
value_set
(_vs),
language_mode
(_mode)
24
{
25
}
26
27
[[nodiscard]]
resultt<>
28
simplify_inequality
(
const
binary_relation_exprt
&)
override
;
31
[[nodiscard]]
resultt<>
32
simplify_inequality_pointer_object
(
const
binary_relation_exprt
&)
override
;
33
[[nodiscard]]
resultt<>
34
simplify_pointer_offset
(
const
pointer_offset_exprt
&)
override
;
35
36
protected
:
37
const
value_sett
&
value_set
;
38
const
irep_idt
language_mode
;
39
};
40
41
#endif
// CPROVER_GOTO_SYMEX_SIMPLIFY_EXPR_WITH_VALUE_SET_H
binary_relation_exprt
A base class for relations, i.e., binary predicates whose two operands have the same type.
Definition
std_expr.h:774
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
pointer_offset_exprt
The offset (in bytes) of a pointer relative to the object.
Definition
pointer_expr.h:1282
simplify_expr_with_value_sett::simplify_pointer_offset
resultt simplify_pointer_offset(const pointer_offset_exprt &) override
Definition
simplify_expr_with_value_set.cpp:231
simplify_expr_with_value_sett::simplify_expr_with_value_sett
simplify_expr_with_value_sett(const value_sett &_vs, const irep_idt &_mode, const namespacet &_ns)
Definition
simplify_expr_with_value_set.h:19
simplify_expr_with_value_sett::value_set
const value_sett & value_set
Definition
simplify_expr_with_value_set.h:37
simplify_expr_with_value_sett::simplify_inequality
resultt simplify_inequality(const binary_relation_exprt &) override
simplifies inequalities !=, <=, <, >=, >, and also ==
Definition
simplify_expr_with_value_set.cpp:128
simplify_expr_with_value_sett::simplify_inequality_pointer_object
resultt simplify_inequality_pointer_object(const binary_relation_exprt &) override
When all candidates in the value set have the same offset we can replace a pointer_offset expression ...
Definition
simplify_expr_with_value_set.cpp:159
simplify_expr_with_value_sett::language_mode
const irep_idt language_mode
Definition
simplify_expr_with_value_set.h:38
simplify_exprt::simplify_exprt
simplify_exprt(const namespacet &_ns)
Definition
simplify_expr_class.h:87
value_sett
State type in value_set_domaint, used in value-set analysis and goto-symex.
Definition
value_set.h:43
resultt
resultt
The result of goto verifying.
Definition
properties.h:45
simplify_expr_class.h
irep_idt
dstringt irep_idt
Definition
verification_result.h:16
goto-symex
simplify_expr_with_value_set.h
Generated by
1.17.0