cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
smt_commands.h
Go to the documentation of this file.
1
// Author: Diffblue Ltd.
2
3
#ifndef CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_COMMANDS_H
4
#define CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_COMMANDS_H
5
6
#include <
util/irep.h
>
7
8
#include "
smt_logics.h
"
9
#include "
smt_options.h
"
10
#include "
smt_terms.h
"
11
12
class
smt_command_const_downcast_visitort
;
13
14
class
smt_commandt
:
protected
irept
15
{
16
public
:
17
// smt_commandt does not support the notion of an empty / null state. Use
18
// std::optional<smt_commandt> instead if an empty command is required.
19
smt_commandt
() =
delete
;
20
21
using
irept::pretty
;
22
23
bool
operator==
(
const
smt_commandt
&)
const
;
24
bool
operator!=
(
const
smt_commandt
&)
const
;
25
26
void
accept
(
smt_command_const_downcast_visitort
&)
const
;
27
void
accept
(
smt_command_const_downcast_visitort
&&)
const
;
28
29
protected
:
30
using
irept::irept
;
31
};
32
33
class
smt_assert_commandt
:
public
smt_commandt
,
34
private
smt_termt::storert
<smt_assert_commandt>
35
{
36
public
:
37
explicit
smt_assert_commandt
(
smt_termt
condition
);
38
const
smt_termt
&
condition
()
const
;
39
};
40
41
class
smt_check_sat_commandt
:
public
smt_commandt
42
{
43
public
:
44
smt_check_sat_commandt
();
45
};
46
47
class
smt_declare_function_commandt
48
:
public
smt_commandt
,
49
private
smt_sortt::storert
<smt_declare_function_commandt>,
50
private
smt_termt::storert
<smt_declare_function_commandt>
51
{
52
public
:
53
smt_declare_function_commandt
(
54
smt_identifier_termt
identifier
,
55
std::vector<smt_sortt>
parameter_sorts
);
56
const
smt_identifier_termt
&
identifier
()
const
;
57
const
smt_sortt
&
return_sort
()
const
;
58
std::vector<std::reference_wrapper<const smt_sortt>>
parameter_sorts
()
const
;
59
60
private
:
61
using
sort_storert
=
smt_sortt::storert<smt_declare_function_commandt>
;
62
using
term_storert
=
smt_termt::storert<smt_declare_function_commandt>
;
63
};
64
65
class
smt_define_function_commandt
66
:
public
smt_commandt
,
67
private
smt_termt::storert
<smt_define_function_commandt>
68
{
69
public
:
70
smt_define_function_commandt
(
71
irep_idt
identifier
,
72
std::vector<smt_identifier_termt>
parameters
,
73
smt_termt
definition
);
74
const
smt_identifier_termt
&
identifier
()
const
;
75
std::vector<std::reference_wrapper<const smt_identifier_termt>>
76
parameters
()
const
;
77
const
smt_sortt
&
return_sort
()
const
;
78
const
smt_termt
&
definition
()
const
;
79
};
80
81
class
smt_exit_commandt
:
public
smt_commandt
82
{
83
public
:
84
smt_exit_commandt
();
85
};
86
87
class
smt_get_value_commandt
:
public
smt_commandt
,
88
protected
smt_termt::storert
<smt_assert_commandt>
89
{
90
public
:
99
explicit
smt_get_value_commandt
(
smt_termt
descriptor
);
100
const
smt_termt
&
descriptor
()
const
;
101
};
102
103
class
smt_push_commandt
:
public
smt_commandt
104
{
105
public
:
106
explicit
smt_push_commandt
(std::size_t
levels
);
107
size_t
levels
()
const
;
108
};
109
110
class
smt_pop_commandt
:
public
smt_commandt
111
{
112
public
:
113
explicit
smt_pop_commandt
(std::size_t
levels
);
114
size_t
levels
()
const
;
115
};
116
117
class
smt_set_logic_commandt
118
:
public
smt_commandt
,
119
private
smt_logict::storert
<smt_set_logic_commandt>
120
{
121
public
:
122
explicit
smt_set_logic_commandt
(
smt_logict
logic
);
123
const
smt_logict
&
logic
()
const
;
124
};
125
126
class
smt_set_option_commandt
127
:
public
smt_commandt
,
128
private
smt_optiont::storert
<smt_set_option_commandt>
129
{
130
public
:
131
explicit
smt_set_option_commandt
(
smt_optiont
option
);
132
const
smt_optiont
&
option
()
const
;
133
};
134
135
class
smt_command_const_downcast_visitort
136
{
137
public
:
138
#define COMMAND_ID(the_id) \
139
virtual void visit(const smt_##the_id##_commandt &) = 0;
140
#include "smt_commands.def"
141
#undef COMMAND_ID
142
};
143
146
class
smt_command_functiont
147
{
148
private
:
149
std::vector<smt_sortt>
parameter_sorts
;
150
smt_identifier_termt
_identifier
;
151
152
public
:
153
explicit
smt_command_functiont
(
154
const
smt_declare_function_commandt
&function_declaration);
155
explicit
smt_command_functiont
(
156
const
smt_define_function_commandt
&function_definition);
157
irep_idt
identifier
()
const
;
158
smt_sortt
return_sort
(
const
std::vector<smt_termt> &arguments)
const
;
159
void
validate
(
const
std::vector<smt_termt> &arguments)
const
;
160
};
161
162
#endif
// CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_COMMANDS_H
irept::pretty
std::string pretty(unsigned indent=0, unsigned max_indent=0) const
Definition
irep.cpp:482
irept::irept
irept(const irep_idt &_id)
Definition
irep.h:377
smt_assert_commandt::smt_assert_commandt
smt_assert_commandt(smt_termt condition)
Definition
smt_commands.cpp:25
smt_assert_commandt::condition
const smt_termt & condition() const
Definition
smt_commands.cpp:34
smt_check_sat_commandt::smt_check_sat_commandt
smt_check_sat_commandt()
Definition
smt_commands.cpp:39
smt_command_const_downcast_visitort
Definition
smt_commands.h:136
smt_command_functiont::parameter_sorts
std::vector< smt_sortt > parameter_sorts
Definition
smt_commands.h:149
smt_command_functiont::identifier
irep_idt identifier() const
Definition
smt_commands.cpp:224
smt_command_functiont::smt_command_functiont
smt_command_functiont(const smt_declare_function_commandt &function_declaration)
Definition
smt_commands.cpp:204
smt_command_functiont::return_sort
smt_sortt return_sort(const std::vector< smt_termt > &arguments) const
Definition
smt_commands.cpp:229
smt_command_functiont::_identifier
smt_identifier_termt _identifier
Definition
smt_commands.h:150
smt_command_functiont::validate
void validate(const std::vector< smt_termt > &arguments) const
Definition
smt_commands.cpp:235
smt_commandt::accept
void accept(smt_command_const_downcast_visitort &) const
Definition
smt_commands.cpp:194
smt_commandt::irept
irept(const irep_idt &_id)
Definition
irep.h:377
smt_commandt::operator==
bool operator==(const smt_commandt &) const
Definition
smt_commands.cpp:15
smt_commandt::operator!=
bool operator!=(const smt_commandt &) const
Definition
smt_commands.cpp:20
smt_commandt::smt_commandt
smt_commandt()=delete
smt_declare_function_commandt
Definition
smt_commands.h:51
smt_declare_function_commandt::identifier
const smt_identifier_termt & identifier() const
Definition
smt_commands.cpp:59
smt_declare_function_commandt::sort_storert
smt_sortt::storert< smt_declare_function_commandt > sort_storert
Definition
smt_commands.h:61
smt_declare_function_commandt::smt_declare_function_commandt
smt_declare_function_commandt(smt_identifier_termt identifier, std::vector< smt_sortt > parameter_sorts)
Definition
smt_commands.cpp:44
smt_declare_function_commandt::return_sort
const smt_sortt & return_sort() const
Definition
smt_commands.cpp:65
smt_declare_function_commandt::parameter_sorts
std::vector< std::reference_wrapper< const smt_sortt > > parameter_sorts() const
Definition
smt_commands.cpp:71
smt_declare_function_commandt::term_storert
smt_termt::storert< smt_declare_function_commandt > term_storert
Definition
smt_commands.h:62
smt_define_function_commandt
Definition
smt_commands.h:68
smt_define_function_commandt::definition
const smt_termt & definition() const
Definition
smt_commands.cpp:121
smt_define_function_commandt::identifier
const smt_identifier_termt & identifier() const
Definition
smt_commands.cpp:101
smt_define_function_commandt::smt_define_function_commandt
smt_define_function_commandt(irep_idt identifier, std::vector< smt_identifier_termt > parameters, smt_termt definition)
Definition
smt_commands.cpp:82
smt_define_function_commandt::parameters
std::vector< std::reference_wrapper< const smt_identifier_termt > > parameters() const
Definition
smt_commands.cpp:108
smt_define_function_commandt::return_sort
const smt_sortt & return_sort() const
Definition
smt_commands.cpp:116
smt_exit_commandt::smt_exit_commandt
smt_exit_commandt()
Definition
smt_commands.cpp:78
smt_get_value_commandt::descriptor
const smt_termt & descriptor() const
Definition
smt_commands.cpp:132
smt_get_value_commandt::smt_get_value_commandt
smt_get_value_commandt(smt_termt descriptor)
This constructor constructs the get-value command, such that it stores a single descriptor for which ...
Definition
smt_commands.cpp:126
smt_identifier_termt
Stores identifiers in unescaped and unquoted form.
Definition
smt_terms.h:93
smt_logict::storert
Class for adding the ability to up and down cast smt_logict to and from irept.
Definition
smt_logics.h:32
smt_logict
Definition
smt_logics.h:11
smt_optiont::storert
Class for adding the ability to up and down cast smt_optiont to and from irept.
Definition
smt_options.h:32
smt_optiont
Definition
smt_options.h:11
smt_pop_commandt::levels
size_t levels() const
Definition
smt_commands.cpp:154
smt_pop_commandt::smt_pop_commandt
smt_pop_commandt(std::size_t levels)
Definition
smt_commands.cpp:148
smt_push_commandt::levels
size_t levels() const
Definition
smt_commands.cpp:143
smt_push_commandt::smt_push_commandt
smt_push_commandt(std::size_t levels)
Definition
smt_commands.cpp:137
smt_set_logic_commandt::logic
const smt_logict & logic() const
Definition
smt_commands.cpp:165
smt_set_logic_commandt::smt_set_logic_commandt
smt_set_logic_commandt(smt_logict logic)
Definition
smt_commands.cpp:159
smt_set_option_commandt::smt_set_option_commandt
smt_set_option_commandt(smt_optiont option)
Definition
smt_commands.cpp:170
smt_set_option_commandt::option
const smt_optiont & option() const
Definition
smt_commands.cpp:176
smt_sortt::storert
Class for adding the ability to up and down cast smt_sortt to and from irept.
Definition
smt_sorts.h:39
smt_sortt
Definition
smt_sorts.h:18
smt_termt::storert
Class for adding the ability to up and down cast smt_termt to and from irept.
Definition
smt_terms.h:44
smt_termt
Definition
smt_terms.h:21
irep.h
smt_logics.h
smt_options.h
smt_terms.h
irep_idt
dstringt irep_idt
Definition
verification_result.h:16
solvers
smt2_incremental
ast
smt_commands.h
Generated by
1.17.0