CBMC
smt_bit_vector_theory.h
Go to the documentation of this file.
1 // Author: Diffblue Ltd.
2 
3 #ifndef CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_BIT_VECTOR_THEORY_H
4 #define CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_BIT_VECTOR_THEORY_H
5 
7 
9 {
10 public:
11  struct concatt final
12  {
13  static const char *identifier();
14  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
15  static void validate(const smt_termt &lhs, const smt_termt &rhs);
16  };
18 
19  struct extractt final
20  {
21  std::size_t i;
22  std::size_t j;
23  static const char *identifier();
24  smt_sortt return_sort(const smt_termt &operand) const;
25  std::vector<smt_indext> indices() const;
26  void validate(const smt_termt &operand) const;
27  };
38  extract(std::size_t i, std::size_t j);
39 
40  // Bitwise operators
41  struct nott final
42  {
43  static const char *identifier();
44  static smt_sortt return_sort(const smt_termt &operand);
45  static void validate(const smt_termt &operand);
46  };
48 
49  struct andt final
50  {
51  static const char *identifier();
52  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
53  static void validate(const smt_termt &lhs, const smt_termt &rhs);
54  };
56 
57  struct ort final
58  {
59  static const char *identifier();
60  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
61  static void validate(const smt_termt &lhs, const smt_termt &rhs);
62  };
64 
65  struct nandt final
66  {
67  static const char *identifier();
68  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
69  static void validate(const smt_termt &lhs, const smt_termt &rhs);
70  };
72 
73  struct nort final
74  {
75  static const char *identifier();
76  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
77  static void validate(const smt_termt &lhs, const smt_termt &rhs);
78  };
80 
81  struct xort final
82  {
83  static const char *identifier();
84  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
85  static void validate(const smt_termt &lhs, const smt_termt &rhs);
86  };
88 
89  struct xnort final
90  {
91  static const char *identifier();
92  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
93  static void validate(const smt_termt &lhs, const smt_termt &rhs);
94  };
96 
97  struct comparet final
98  {
99  static const char *identifier();
100  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
101  static void validate(const smt_termt &lhs, const smt_termt &rhs);
102  };
104 
105  // Relational operator class declarations
106  struct unsigned_less_thant final
107  {
108  static const char *identifier();
109  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
110  static void validate(const smt_termt &lhs, const smt_termt &rhs);
111  };
114 
116  {
117  static const char *identifier();
118  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
119  static void validate(const smt_termt &lhs, const smt_termt &rhs);
120  };
124 
126  {
127  static const char *identifier();
128  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
129  static void validate(const smt_termt &lhs, const smt_termt &rhs);
130  };
133 
135  {
136  static const char *identifier();
137  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
138  static void validate(const smt_termt &lhs, const smt_termt &rhs);
139  };
143 
144  struct signed_less_thant final
145  {
146  static const char *identifier();
147  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
148  static void validate(const smt_termt &lhs, const smt_termt &rhs);
149  };
152 
154  {
155  static const char *identifier();
156  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
157  static void validate(const smt_termt &lhs, const smt_termt &rhs);
158  };
162 
163  struct signed_greater_thant final
164  {
165  static const char *identifier();
166  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
167  static void validate(const smt_termt &lhs, const smt_termt &rhs);
168  };
171 
173  {
174  static const char *identifier();
175  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
176  static void validate(const smt_termt &lhs, const smt_termt &rhs);
177  };
181 
182  struct addt final
183  {
184  static const char *identifier();
185  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
186  static void validate(const smt_termt &lhs, const smt_termt &rhs);
187  };
189 
190  struct subtractt final
191  {
192  static const char *identifier();
193  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
194  static void validate(const smt_termt &lhs, const smt_termt &rhs);
195  };
197 
198  struct multiplyt final
199  {
200  static const char *identifier();
201  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
202  static void validate(const smt_termt &lhs, const smt_termt &rhs);
203  };
205 
206  struct unsigned_dividet final
207  {
208  static const char *identifier();
209  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
210  static void validate(const smt_termt &lhs, const smt_termt &rhs);
211  };
214 
215  struct signed_dividet final
216  {
217  static const char *identifier();
218  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
219  static void validate(const smt_termt &lhs, const smt_termt &rhs);
220  };
223 
224  struct unsigned_remaindert final
225  {
226  static const char *identifier();
227  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
228  static void validate(const smt_termt &lhs, const smt_termt &rhs);
229  };
232 
233  struct signed_remaindert final
234  {
235  static const char *identifier();
236  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
237  static void validate(const smt_termt &lhs, const smt_termt &rhs);
238  };
241 
242  struct negatet final
243  {
244  static const char *identifier();
245  static smt_sortt return_sort(const smt_termt &operand);
246  static void validate(const smt_termt &operand);
247  };
250 
251  // Shift operations
252  struct shift_leftt final
253  {
254  static const char *identifier();
255  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
256  static void validate(const smt_termt &lhs, const smt_termt &rhs);
257  };
259 
260  struct logical_shift_rightt final
261  {
262  static const char *identifier();
263  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
264  static void validate(const smt_termt &lhs, const smt_termt &rhs);
265  };
268 
270  {
271  static const char *identifier();
272  static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
273  static void validate(const smt_termt &lhs, const smt_termt &rhs);
274  };
277 
278  struct repeatt final
279  {
280  std::size_t i;
281  static const char *identifier();
282  smt_sortt return_sort(const smt_termt &operand) const;
283  std::vector<smt_indext> indices() const;
284  void validate(const smt_termt &operand) const;
285  };
287  repeat(std::size_t i);
288 
289  struct zero_extendt final
290  {
291  std::size_t i;
292  static const char *identifier();
293  smt_sortt return_sort(const smt_termt &operand) const;
294  std::vector<smt_indext> indices() const;
295  static void validate(const smt_termt &operand);
296  };
298  zero_extend(std::size_t i);
299 
300  struct sign_extendt final
301  {
302  std::size_t i;
303  static const char *identifier();
304  smt_sortt return_sort(const smt_termt &operand) const;
305  std::vector<smt_indext> indices() const;
306  static void validate(const smt_termt &operand);
307  };
309  sign_extend(std::size_t i);
310 
311  struct rotate_leftt final
312  {
313  std::size_t i;
314  static const char *identifier();
315  static smt_sortt return_sort(const smt_termt &operand);
316  std::vector<smt_indext> indices() const;
317  static void validate(const smt_termt &operand);
318  };
320  rotate_left(std::size_t i);
321 
322  struct rotate_rightt final
323  {
324  std::size_t i;
325  static const char *identifier();
326  static smt_sortt return_sort(const smt_termt &operand);
327  std::vector<smt_indext> indices() const;
328  static void validate(const smt_termt &operand);
329  };
331  rotate_right(std::size_t i);
332 };
333 
334 #endif // CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_BIT_VECTOR_THEORY_H
smt_bit_vector_theoryt::extractt::indices
std::vector< smt_indext > indices() const
Definition: smt_bit_vector_theory.cpp:65
smt_bit_vector_theoryt::unsigned_dividet::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:530
smt_bit_vector_theoryt::sign_extendt::return_sort
smt_sortt return_sort(const smt_termt &operand) const
Definition: smt_bit_vector_theory.cpp:769
smt_bit_vector_theoryt::unsigned_less_thant::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:284
smt_bit_vector_theoryt::unsigned_dividet::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:525
smt_bit_vector_theoryt::ort::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:143
smt_bit_vector_theoryt::unsigned_greater_thant
Definition: smt_bit_vector_theory.h:125
smt_bit_vector_theoryt::xnort::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:238
smt_bit_vector_theoryt::unsigned_remaindert::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:576
smt_bit_vector_theoryt::shift_leftt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:647
smt_bit_vector_theoryt::nort::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:194
smt_bit_vector_theoryt::signed_greater_thant
Definition: smt_bit_vector_theory.h:163
smt_bit_vector_theoryt::comparet
Definition: smt_bit_vector_theory.h:97
smt_bit_vector_theoryt::compare
static const smt_function_application_termt::factoryt< comparet > compare
Definition: smt_bit_vector_theory.h:103
smt_bit_vector_theoryt::multiplyt
Definition: smt_bit_vector_theory.h:198
smt_bit_vector_theoryt::unsigned_less_thant::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:272
smt_bit_vector_theoryt::xort::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:209
smt_bit_vector_theoryt::nandt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:160
smt_bit_vector_theoryt::arithmetic_shift_rightt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:681
smt_bit_vector_theoryt::signed_greater_than_or_equal
static const smt_function_application_termt::factoryt< signed_greater_than_or_equalt > signed_greater_than_or_equal
Definition: smt_bit_vector_theory.h:180
smt_bit_vector_theoryt::signed_less_thant::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:377
smt_bit_vector_theoryt::negatet::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:617
smt_bit_vector_theoryt::add
static const smt_function_application_termt::factoryt< addt > add
Definition: smt_bit_vector_theory.h:188
smt_bit_vector_theoryt::unsigned_greater_than_or_equalt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:354
smt_bit_vector_theoryt::addt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:457
smt_bit_vector_theoryt::ort
Definition: smt_bit_vector_theory.h:57
smt_bit_vector_theoryt::logical_shift_rightt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:658
smt_bit_vector_theoryt::unsigned_remaindert::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:583
smt_bit_vector_theoryt::rotate_leftt::i
std::size_t i
Definition: smt_bit_vector_theory.h:313
smt_bit_vector_theoryt::make_not
static const smt_function_application_termt::factoryt< nott > make_not
Definition: smt_bit_vector_theory.h:47
smt_bit_vector_theoryt::unsigned_dividet
Definition: smt_bit_vector_theory.h:206
smt_bit_vector_theoryt::repeat
static smt_function_application_termt::factoryt< repeatt > repeat(std::size_t i)
Definition: smt_bit_vector_theory.cpp:729
smt_bit_vector_theoryt::ort::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:138
smt_bit_vector_theoryt::signed_remaindert::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:606
smt_termt
Definition: smt_terms.h:20
smt_bit_vector_theoryt::sign_extendt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:764
smt_bit_vector_theoryt::logical_shift_rightt
Definition: smt_bit_vector_theory.h:260
smt_bit_vector_theoryt::signed_greater_than_or_equalt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:446
smt_bit_vector_theoryt::negatet::return_sort
static smt_sortt return_sort(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:622
smt_bit_vector_theoryt::concat
static const smt_function_application_termt::factoryt< concatt > concat
Definition: smt_bit_vector_theory.h:17
smt_bit_vector_theoryt::nor
static const smt_function_application_termt::factoryt< nort > nor
Definition: smt_bit_vector_theory.h:79
smt_bit_vector_theoryt::signed_less_thant
Definition: smt_bit_vector_theory.h:144
smt_bit_vector_theoryt::unsigned_less_than_or_equalt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:307
smt_bit_vector_theoryt::shift_leftt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:635
smt_bit_vector_theoryt::unsigned_less_than_or_equalt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:295
smt_bit_vector_theoryt::addt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:462
smt_bit_vector_theoryt::sign_extendt::i
std::size_t i
Definition: smt_bit_vector_theory.h:302
smt_bit_vector_theoryt::sign_extendt
Definition: smt_bit_vector_theory.h:300
smt_bit_vector_theoryt::signed_greater_thant::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:416
smt_bit_vector_theoryt::signed_dividet::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:560
smt_bit_vector_theoryt::unsigned_remaindert
Definition: smt_bit_vector_theory.h:224
smt_bit_vector_theoryt::rotate_leftt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:793
smt_bit_vector_theoryt::logical_shift_rightt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:663
smt_bit_vector_theoryt::nott::validate
static void validate(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:108
smt_bit_vector_theoryt::rotate_leftt::return_sort
static smt_sortt return_sort(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:799
smt_bit_vector_theoryt::signed_greater_than_or_equalt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:439
smt_bit_vector_theoryt::signed_greater_than_or_equalt
Definition: smt_bit_vector_theory.h:172
smt_bit_vector_theoryt::rotate_rightt::i
std::size_t i
Definition: smt_bit_vector_theory.h:324
smt_bit_vector_theoryt::rotate_leftt::validate
static void validate(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:809
smt_bit_vector_theoryt::signed_remaindert
Definition: smt_bit_vector_theory.h:233
smt_bit_vector_theoryt::unsigned_greater_than_or_equalt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:342
smt_bit_vector_theoryt::signed_greater_than_or_equalt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:434
smt_bit_vector_theoryt::logical_shift_right
static const smt_function_application_termt::factoryt< logical_shift_rightt > logical_shift_right
Definition: smt_bit_vector_theory.h:267
smt_bit_vector_theoryt::signed_less_than_or_equalt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:400
smt_bit_vector_theoryt::unsigned_greater_thant::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:323
smt_bit_vector_theoryt::xort
Definition: smt_bit_vector_theory.h:81
smt_bit_vector_theoryt::unsigned_greater_than_or_equalt
Definition: smt_bit_vector_theory.h:134
smt_bit_vector_theoryt::nandt
Definition: smt_bit_vector_theory.h:65
smt_bit_vector_theoryt::andt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:121
smt_bit_vector_theoryt::nandt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:172
smt_bit_vector_theoryt::concatt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:7
smt_bit_vector_theoryt::repeatt::validate
void validate(const smt_termt &operand) const
Definition: smt_bit_vector_theory.cpp:722
smt_bit_vector_theoryt::zero_extendt
Definition: smt_bit_vector_theory.h:289
smt_bit_vector_theoryt::signed_less_than_or_equalt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:388
smt_bit_vector_theoryt::repeatt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:704
smt_bit_vector_theoryt::signed_less_than_or_equal
static const smt_function_application_termt::factoryt< signed_less_than_or_equalt > signed_less_than_or_equal
Definition: smt_bit_vector_theory.h:161
smt_bit_vector_theoryt::unsigned_greater_thant::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:330
smt_bit_vector_theoryt::nott::return_sort
static smt_sortt return_sort(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:103
smt_bit_vector_theoryt
Definition: smt_bit_vector_theory.h:8
smt_bit_vector_theoryt::extract
static smt_function_application_termt::factoryt< extractt > extract(std::size_t i, std::size_t j)
Makes a factory for extract function applications.
Definition: smt_bit_vector_theory.cpp:79
smt_bit_vector_theoryt::nand
static const smt_function_application_termt::factoryt< nandt > nand
Definition: smt_bit_vector_theory.h:71
smt_bit_vector_theoryt::multiplyt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:507
smt_bit_vector_theoryt::zero_extendt::i
std::size_t i
Definition: smt_bit_vector_theory.h:291
smt_bit_vector_theoryt::nott
Definition: smt_bit_vector_theory.h:41
smt_bit_vector_theoryt::sign_extend
static smt_function_application_termt::factoryt< sign_extendt > sign_extend(std::size_t i)
Definition: smt_bit_vector_theory.cpp:788
smt_bit_vector_theoryt::unsigned_divide
static const smt_function_application_termt::factoryt< unsigned_dividet > unsigned_divide
Definition: smt_bit_vector_theory.h:213
smt_bit_vector_theoryt::xnort::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:226
smt_bit_vector_theoryt::xnor
static const smt_function_application_termt::factoryt< xnort > xnor
Definition: smt_bit_vector_theory.h:95
smt_bit_vector_theoryt::make_xor
static const smt_function_application_termt::factoryt< xort > make_xor
Definition: smt_bit_vector_theory.h:87
smt_bit_vector_theoryt::signed_dividet::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:553
smt_bit_vector_theoryt::extractt::j
std::size_t j
Definition: smt_bit_vector_theory.h:22
smt_bit_vector_theoryt::rotate_rightt::return_sort
static smt_sortt return_sort(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:826
smt_bit_vector_theoryt::unsigned_less_thant::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:277
smt_bit_vector_theoryt::extractt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:54
smt_bit_vector_theoryt::repeatt::indices
std::vector< smt_indext > indices() const
Definition: smt_bit_vector_theory.cpp:717
smt_sortt
Definition: smt_sorts.h:17
smt_bit_vector_theoryt::unsigned_dividet::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:537
smt_bit_vector_theoryt::unsigned_remaindert::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:571
smt_bit_vector_theoryt::multiply
static const smt_function_application_termt::factoryt< multiplyt > multiply
Definition: smt_bit_vector_theory.h:204
smt_bit_vector_theoryt::arithmetic_shift_rightt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:693
smt_bit_vector_theoryt::zero_extendt::indices
std::vector< smt_indext > indices() const
Definition: smt_bit_vector_theory.cpp:748
smt_bit_vector_theoryt::nort
Definition: smt_bit_vector_theory.h:73
smt_bit_vector_theoryt::comparet::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:248
smt_bit_vector_theoryt::zero_extendt::return_sort
smt_sortt return_sort(const smt_termt &operand) const
Definition: smt_bit_vector_theory.cpp:740
smt_bit_vector_theoryt::repeatt::return_sort
smt_sortt return_sort(const smt_termt &operand) const
Definition: smt_bit_vector_theory.cpp:710
smt_bit_vector_theoryt::subtractt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:484
smt_bit_vector_theoryt::negatet
Definition: smt_bit_vector_theory.h:242
smt_bit_vector_theoryt::comparet::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:253
smt_bit_vector_theoryt::subtractt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:479
smt_bit_vector_theoryt::xort::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:204
smt_bit_vector_theoryt::signed_remainder
static const smt_function_application_termt::factoryt< signed_remaindert > signed_remainder
Definition: smt_bit_vector_theory.h:240
smt_bit_vector_theoryt::signed_greater_thant::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:411
smt_bit_vector_theoryt::comparet::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:260
smt_bit_vector_theoryt::xnort
Definition: smt_bit_vector_theory.h:89
smt_bit_vector_theoryt::rotate_left
static smt_function_application_termt::factoryt< rotate_leftt > rotate_left(std::size_t i)
Definition: smt_bit_vector_theory.cpp:815
smt_bit_vector_theoryt::extractt::return_sort
smt_sortt return_sort(const smt_termt &operand) const
Definition: smt_bit_vector_theory.cpp:60
smt_bit_vector_theoryt::make_or
static const smt_function_application_termt::factoryt< ort > make_or
Definition: smt_bit_vector_theory.h:63
smt_bit_vector_theoryt::nott::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:98
smt_bit_vector_theoryt::unsigned_less_thant
Definition: smt_bit_vector_theory.h:106
smt_function_application_termt::factoryt
Definition: smt_terms.h:185
smt_bit_vector_theoryt::signed_remaindert::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:594
smt_bit_vector_theoryt::sign_extendt::validate
static void validate(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:782
smt_bit_vector_theoryt::unsigned_remainder
static const smt_function_application_termt::factoryt< unsigned_remaindert > unsigned_remainder
Definition: smt_bit_vector_theory.h:231
smt_bit_vector_theoryt::shift_left
static const smt_function_application_termt::factoryt< shift_leftt > shift_left
Definition: smt_bit_vector_theory.h:258
smt_bit_vector_theoryt::xort::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:216
smt_bit_vector_theoryt::extractt::i
std::size_t i
Definition: smt_bit_vector_theory.h:21
smt_bit_vector_theoryt::signed_dividet
Definition: smt_bit_vector_theory.h:215
smt_bit_vector_theoryt::signed_less_thant::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:370
smt_bit_vector_theoryt::unsigned_less_than_or_equalt
Definition: smt_bit_vector_theory.h:115
smt_bit_vector_theoryt::andt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:128
smt_bit_vector_theoryt::unsigned_less_than
static const smt_function_application_termt::factoryt< unsigned_less_thant > unsigned_less_than
Definition: smt_bit_vector_theory.h:113
smt_bit_vector_theoryt::andt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:116
smt_bit_vector_theoryt::unsigned_greater_than_or_equalt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:347
smt_bit_vector_theoryt::zero_extend
static smt_function_application_termt::factoryt< zero_extendt > zero_extend(std::size_t i)
Definition: smt_bit_vector_theory.cpp:759
smt_bit_vector_theoryt::subtractt
Definition: smt_bit_vector_theory.h:190
smt_bit_vector_theoryt::unsigned_greater_thant::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:318
smt_bit_vector_theoryt::shift_leftt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:640
smt_bit_vector_theoryt::signed_less_thant::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:365
smt_bit_vector_theoryt::negatet::validate
static void validate(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:627
smt_bit_vector_theoryt::nort::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:187
smt_bit_vector_theoryt::signed_less_than
static const smt_function_application_termt::factoryt< signed_less_thant > signed_less_than
Definition: smt_bit_vector_theory.h:151
smt_bit_vector_theoryt::concatt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:12
smt_bit_vector_theoryt::multiplyt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:502
smt_bit_vector_theoryt::sign_extendt::indices
std::vector< smt_indext > indices() const
Definition: smt_bit_vector_theory.cpp:777
smt_bit_vector_theoryt::zero_extendt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:735
smt_bit_vector_theoryt::unsigned_greater_than_or_equal
static const smt_function_application_termt::factoryt< unsigned_greater_than_or_equalt > unsigned_greater_than_or_equal
Definition: smt_bit_vector_theory.h:142
smt_bit_vector_theoryt::unsigned_less_than_or_equal
static const smt_function_application_termt::factoryt< unsigned_less_than_or_equalt > unsigned_less_than_or_equal
Definition: smt_bit_vector_theory.h:123
smt_bit_vector_theoryt::ort::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:150
smt_bit_vector_theoryt::addt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:469
smt_bit_vector_theoryt::repeatt
Definition: smt_bit_vector_theory.h:278
smt_bit_vector_theoryt::signed_less_than_or_equalt
Definition: smt_bit_vector_theory.h:153
smt_bit_vector_theoryt::zero_extendt::validate
static void validate(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:753
smt_bit_vector_theoryt::negate
static const smt_function_application_termt::factoryt< negatet > negate
Arithmetic negation in two's complement.
Definition: smt_bit_vector_theory.h:249
smt_bit_vector_theoryt::nandt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:165
smt_bit_vector_theoryt::concatt
Definition: smt_bit_vector_theory.h:11
smt_bit_vector_theoryt::make_and
static const smt_function_application_termt::factoryt< andt > make_and
Definition: smt_bit_vector_theory.h:55
smt_bit_vector_theoryt::subtract
static const smt_function_application_termt::factoryt< subtractt > subtract
Definition: smt_bit_vector_theory.h:196
smt_bit_vector_theoryt::rotate_rightt::validate
static void validate(const smt_termt &operand)
Definition: smt_bit_vector_theory.cpp:836
smt_bit_vector_theoryt::shift_leftt
Definition: smt_bit_vector_theory.h:252
smt_bit_vector_theoryt::signed_less_than_or_equalt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:393
smt_bit_vector_theoryt::signed_remaindert::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:599
smt_bit_vector_theoryt::concatt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:44
smt_bit_vector_theoryt::arithmetic_shift_rightt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:686
smt_bit_vector_theoryt::rotate_leftt::indices
std::vector< smt_indext > indices() const
Definition: smt_bit_vector_theory.cpp:804
smt_bit_vector_theoryt::rotate_rightt::indices
std::vector< smt_indext > indices() const
Definition: smt_bit_vector_theory.cpp:831
smt_bit_vector_theoryt::addt
Definition: smt_bit_vector_theory.h:182
smt_bit_vector_theoryt::signed_dividet::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:548
smt_bit_vector_theoryt::subtractt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:491
smt_bit_vector_theoryt::xnort::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:231
smt_bit_vector_theoryt::rotate_rightt::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:820
smt_bit_vector_theoryt::arithmetic_shift_rightt
Definition: smt_bit_vector_theory.h:269
smt_bit_vector_theoryt::andt
Definition: smt_bit_vector_theory.h:49
smt_bit_vector_theoryt::nort::identifier
static const char * identifier()
Definition: smt_bit_vector_theory.cpp:182
smt_bit_vector_theoryt::logical_shift_rightt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:670
smt_bit_vector_theoryt::rotate_right
static smt_function_application_termt::factoryt< rotate_rightt > rotate_right(std::size_t i)
Definition: smt_bit_vector_theory.cpp:842
smt_bit_vector_theoryt::extractt::validate
void validate(const smt_termt &operand) const
Definition: smt_bit_vector_theory.cpp:70
smt_terms.h
smt_bit_vector_theoryt::signed_greater_than
static const smt_function_application_termt::factoryt< signed_greater_thant > signed_greater_than
Definition: smt_bit_vector_theory.h:170
smt_bit_vector_theoryt::extractt
Definition: smt_bit_vector_theory.h:19
smt_bit_vector_theoryt::signed_greater_thant::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:423
smt_bit_vector_theoryt::unsigned_greater_than
static const smt_function_application_termt::factoryt< unsigned_greater_thant > unsigned_greater_than
Definition: smt_bit_vector_theory.h:132
smt_bit_vector_theoryt::unsigned_less_than_or_equalt::return_sort
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:300
smt_bit_vector_theoryt::arithmetic_shift_right
static const smt_function_application_termt::factoryt< arithmetic_shift_rightt > arithmetic_shift_right
Definition: smt_bit_vector_theory.h:276
smt_bit_vector_theoryt::repeatt::i
std::size_t i
Definition: smt_bit_vector_theory.h:280
smt_bit_vector_theoryt::signed_divide
static const smt_function_application_termt::factoryt< signed_dividet > signed_divide
Definition: smt_bit_vector_theory.h:222
smt_bit_vector_theoryt::rotate_leftt
Definition: smt_bit_vector_theory.h:311
smt_bit_vector_theoryt::rotate_rightt
Definition: smt_bit_vector_theory.h:322
smt_bit_vector_theoryt::multiplyt::validate
static void validate(const smt_termt &lhs, const smt_termt &rhs)
Definition: smt_bit_vector_theory.cpp:514