@@ -19,26 +19,189 @@ static void validate_bit_vector_predicate_arguments(
19
19
" Left and right operands must have the same bit width." );
20
20
}
21
21
22
- #define SMT_BITVECTOR_THEORY_PREDICATE (the_identifier, the_name ) \
23
- void smt_bit_vector_theoryt::the_name##t::validate( \
24
- const smt_termt &left, const smt_termt &right) \
25
- { \
26
- validate_bit_vector_predicate_arguments (left, right); \
27
- } \
28
- \
29
- smt_sortt smt_bit_vector_theoryt::the_name##t::return_sort( \
30
- const smt_termt &, const smt_termt &) \
31
- { \
32
- return smt_bool_sortt{}; \
33
- } \
34
- \
35
- const char *smt_bit_vector_theoryt::the_name##t::identifier() \
36
- { \
37
- return #the_identifier; \
38
- } \
39
- \
40
- const smt_function_application_termt::factoryt< \
41
- smt_bit_vector_theoryt::the_name##t> \
42
- smt_bit_vector_theoryt::the_name{};
43
- #include " smt_bit_vector_theory.def"
44
- #undef SMT_BITVECTOR_THEORY_PREDICATE
22
+ // Relational operator definitions
23
+
24
+ const char *smt_bit_vector_theoryt::unsigned_less_thant::identifier ()
25
+ {
26
+ return " bvult" ;
27
+ }
28
+
29
+ smt_sortt smt_bit_vector_theoryt::unsigned_less_thant::return_sort (
30
+ const smt_termt &lhs,
31
+ const smt_termt &rhs)
32
+ {
33
+ return smt_bool_sortt{};
34
+ }
35
+
36
+ void smt_bit_vector_theoryt::unsigned_less_thant::validate (
37
+ const smt_termt &lhs,
38
+ const smt_termt &rhs)
39
+ {
40
+ validate_bit_vector_predicate_arguments (lhs, rhs);
41
+ }
42
+
43
+ const smt_function_application_termt::factoryt<
44
+ smt_bit_vector_theoryt::unsigned_less_thant>
45
+ smt_bit_vector_theoryt::unsigned_less_than{};
46
+
47
+ const char *smt_bit_vector_theoryt::unsigned_less_than_or_equalt::identifier ()
48
+ {
49
+ return " bvule" ;
50
+ }
51
+
52
+ smt_sortt smt_bit_vector_theoryt::unsigned_less_than_or_equalt::return_sort (
53
+ const smt_termt &lhs,
54
+ const smt_termt &rhs)
55
+ {
56
+ return smt_bool_sortt{};
57
+ }
58
+
59
+ void smt_bit_vector_theoryt::unsigned_less_than_or_equalt::validate (
60
+ const smt_termt &lhs,
61
+ const smt_termt &rhs)
62
+ {
63
+ validate_bit_vector_predicate_arguments (lhs, rhs);
64
+ }
65
+
66
+ const smt_function_application_termt::factoryt<
67
+ smt_bit_vector_theoryt::unsigned_less_than_or_equalt>
68
+ smt_bit_vector_theoryt::unsigned_less_than_or_equal{};
69
+
70
+ const char *smt_bit_vector_theoryt::unsigned_greater_thant::identifier ()
71
+ {
72
+ return " bvugt" ;
73
+ }
74
+
75
+ smt_sortt smt_bit_vector_theoryt::unsigned_greater_thant::return_sort (
76
+ const smt_termt &lhs,
77
+ const smt_termt &rhs)
78
+ {
79
+ return smt_bool_sortt{};
80
+ }
81
+
82
+ void smt_bit_vector_theoryt::unsigned_greater_thant::validate (
83
+ const smt_termt &lhs,
84
+ const smt_termt &rhs)
85
+ {
86
+ validate_bit_vector_predicate_arguments (lhs, rhs);
87
+ }
88
+
89
+ const smt_function_application_termt::factoryt<
90
+ smt_bit_vector_theoryt::unsigned_greater_thant>
91
+ smt_bit_vector_theoryt::unsigned_greater_than{};
92
+
93
+ const char *
94
+ smt_bit_vector_theoryt::unsigned_greater_than_or_equalt::identifier ()
95
+ {
96
+ return " bvuge" ;
97
+ }
98
+
99
+ smt_sortt smt_bit_vector_theoryt::unsigned_greater_than_or_equalt::return_sort (
100
+ const smt_termt &lhs,
101
+ const smt_termt &rhs)
102
+ {
103
+ return smt_bool_sortt{};
104
+ }
105
+
106
+ void smt_bit_vector_theoryt::unsigned_greater_than_or_equalt::validate (
107
+ const smt_termt &lhs,
108
+ const smt_termt &rhs)
109
+ {
110
+ validate_bit_vector_predicate_arguments (lhs, rhs);
111
+ }
112
+
113
+ const smt_function_application_termt::factoryt<
114
+ smt_bit_vector_theoryt::unsigned_greater_than_or_equalt>
115
+ smt_bit_vector_theoryt::unsigned_greater_than_or_equal{};
116
+
117
+ const char *smt_bit_vector_theoryt::signed_less_thant::identifier ()
118
+ {
119
+ return " bvslt" ;
120
+ }
121
+
122
+ smt_sortt smt_bit_vector_theoryt::signed_less_thant::return_sort (
123
+ const smt_termt &lhs,
124
+ const smt_termt &rhs)
125
+ {
126
+ return smt_bool_sortt{};
127
+ }
128
+
129
+ void smt_bit_vector_theoryt::signed_less_thant::validate (
130
+ const smt_termt &lhs,
131
+ const smt_termt &rhs)
132
+ {
133
+ validate_bit_vector_predicate_arguments (lhs, rhs);
134
+ }
135
+
136
+ const smt_function_application_termt::factoryt<
137
+ smt_bit_vector_theoryt::signed_less_thant>
138
+ smt_bit_vector_theoryt::signed_less_than{};
139
+
140
+ const char *smt_bit_vector_theoryt::signed_less_than_or_equalt::identifier ()
141
+ {
142
+ return " bvsle" ;
143
+ }
144
+
145
+ smt_sortt smt_bit_vector_theoryt::signed_less_than_or_equalt::return_sort (
146
+ const smt_termt &lhs,
147
+ const smt_termt &rhs)
148
+ {
149
+ return smt_bool_sortt{};
150
+ }
151
+
152
+ void smt_bit_vector_theoryt::signed_less_than_or_equalt::validate (
153
+ const smt_termt &lhs,
154
+ const smt_termt &rhs)
155
+ {
156
+ validate_bit_vector_predicate_arguments (lhs, rhs);
157
+ }
158
+
159
+ const smt_function_application_termt::factoryt<
160
+ smt_bit_vector_theoryt::signed_less_than_or_equalt>
161
+ smt_bit_vector_theoryt::signed_less_than_or_equal{};
162
+
163
+ const char *smt_bit_vector_theoryt::signed_greater_thant::identifier ()
164
+ {
165
+ return " bvsgt" ;
166
+ }
167
+
168
+ smt_sortt smt_bit_vector_theoryt::signed_greater_thant::return_sort (
169
+ const smt_termt &lhs,
170
+ const smt_termt &rhs)
171
+ {
172
+ return smt_bool_sortt{};
173
+ }
174
+
175
+ void smt_bit_vector_theoryt::signed_greater_thant::validate (
176
+ const smt_termt &lhs,
177
+ const smt_termt &rhs)
178
+ {
179
+ validate_bit_vector_predicate_arguments (lhs, rhs);
180
+ }
181
+
182
+ const smt_function_application_termt::factoryt<
183
+ smt_bit_vector_theoryt::signed_greater_thant>
184
+ smt_bit_vector_theoryt::signed_greater_than{};
185
+
186
+ const char *smt_bit_vector_theoryt::signed_greater_than_or_equalt::identifier ()
187
+ {
188
+ return " bvsge" ;
189
+ }
190
+
191
+ smt_sortt smt_bit_vector_theoryt::signed_greater_than_or_equalt::return_sort (
192
+ const smt_termt &lhs,
193
+ const smt_termt &rhs)
194
+ {
195
+ return smt_bool_sortt{};
196
+ }
197
+
198
+ void smt_bit_vector_theoryt::signed_greater_than_or_equalt::validate (
199
+ const smt_termt &lhs,
200
+ const smt_termt &rhs)
201
+ {
202
+ validate_bit_vector_predicate_arguments (lhs, rhs);
203
+ }
204
+
205
+ const smt_function_application_termt::factoryt<
206
+ smt_bit_vector_theoryt::signed_greater_than_or_equalt>
207
+ smt_bit_vector_theoryt::signed_greater_than_or_equal{};
0 commit comments