cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
literal_expr.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module:
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
9
10
#ifndef CPROVER_SOLVERS_PROP_LITERAL_EXPR_H
11
#define CPROVER_SOLVERS_PROP_LITERAL_EXPR_H
12
13
#include <
util/std_expr.h
>
14
15
#include "
literal.h
"
16
17
class
literal_exprt
:
public
predicate_exprt
18
{
19
public
:
20
explicit
literal_exprt
(
literalt
a):
21
predicate_exprt
(ID_literal)
22
{
23
set_literal
(a);
24
}
25
26
literalt
get_literal
()
const
27
{
28
literalt
result;
29
result.
set
(
literalt::var_not
(
get_long_long
(ID_literal)));
30
return
result;
31
}
32
33
void
set_literal
(
literalt
a)
34
{
35
set
(ID_literal, a.
get
());
36
}
37
};
38
39
template
<>
40
inline
bool
can_cast_expr<literal_exprt>
(
const
exprt
&base)
41
{
42
return
base.
id
() == ID_literal;
43
}
44
45
inline
void
validate_expr
(
const
literal_exprt
&literal)
46
{
47
DATA_INVARIANT
(
48
!literal.
has_operands
(),
"literal expression should not have operands"
);
49
}
50
56
inline
const
literal_exprt
&
to_literal_expr
(
const
exprt
&expr)
57
{
58
PRECONDITION
(expr.
id
() == ID_literal);
59
DATA_INVARIANT
(
60
!expr.
has_operands
(),
"literal expression should not have operands"
);
61
return
static_cast<
const
literal_exprt
&
>
(expr);
62
}
63
66
inline
literal_exprt
&
to_literal_expr
(
exprt
&expr)
67
{
68
PRECONDITION
(expr.
id
() == ID_literal);
69
DATA_INVARIANT
(
70
!expr.
has_operands
(),
"literal expression should not have operands"
);
71
return
static_cast<
literal_exprt
&
>
(expr);
72
}
73
74
#endif
// CPROVER_SOLVERS_PROP_LITERAL_EXPR_H
exprt
Base class for all expressions.
Definition
expr.h:57
exprt::has_operands
bool has_operands() const
Return true if there is at least one operand.
Definition
expr.h:92
irept::set
void set(const irep_idt &name, const irep_idt &value)
Definition
irep.h:412
irept::get_long_long
long long get_long_long(const irep_idt &name) const
Definition
irep.cpp:72
irept::id
const irep_idt & id() const
Definition
irep.h:388
literal_exprt
Definition
literal_expr.h:18
literal_exprt::literal_exprt
literal_exprt(literalt a)
Definition
literal_expr.h:20
literal_exprt::get_literal
literalt get_literal() const
Definition
literal_expr.h:26
literal_exprt::set_literal
void set_literal(literalt a)
Definition
literal_expr.h:33
literalt
Definition
literal.h:26
literalt::var_not
unsigned var_not
Definition
literal.h:31
literalt::get
var_not get() const
Definition
literal.h:103
literalt::set
void set(var_not _l)
Definition
literal.h:93
predicate_exprt::predicate_exprt
predicate_exprt(const irep_idt &_id)
Definition
std_expr.h:549
literal.h
to_literal_expr
const literal_exprt & to_literal_expr(const exprt &expr)
Cast a generic exprt to a literal_exprt.
Definition
literal_expr.h:56
validate_expr
void validate_expr(const literal_exprt &literal)
Definition
literal_expr.h:45
can_cast_expr< literal_exprt >
bool can_cast_expr< literal_exprt >(const exprt &base)
Definition
literal_expr.h:40
DATA_INVARIANT
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
Definition
invariant.h:534
PRECONDITION
#define PRECONDITION(CONDITION)
Definition
invariant.h:463
std_expr.h
API to expression classes.
solvers
prop
literal_expr.h
Generated by
1.17.0