@@ -19,26 +19,189 @@ static void validate_bit_vector_predicate_arguments(
1919 " Left and right operands must have the same bit width." );
2020}
2121
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