Skip to content

Commit 1dd4463

Browse files
committed
Remove macro-definition of unsigned_greater_than from X-macro.
And substitute it with a concrete class implementation.
1 parent d3a190f commit 1dd4463

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

src/solvers/smt2_incremental/smt_bit_vector_theory.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,26 @@ void smt_bit_vector_theoryt::unsigned_less_than_or_equalt::validate(
9090
const smt_function_application_termt::factoryt<
9191
smt_bit_vector_theoryt::unsigned_less_than_or_equalt>
9292
smt_bit_vector_theoryt::unsigned_less_than_or_equal{};
93+
94+
const char *smt_bit_vector_theoryt::unsigned_greater_thant::identifier()
95+
{
96+
return "bvugt";
97+
}
98+
99+
smt_sortt smt_bit_vector_theoryt::unsigned_greater_thant::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_thant::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_thant>
115+
smt_bit_vector_theoryt::unsigned_greater_than{};

src/solvers/smt2_incremental/smt_bit_vector_theory.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
/// [X-macro](https://en.wikipedia.org/wiki/X_Macro) pattern. These define the
44
/// set of bitvector theory functions which are implemented and it is used to
55
/// automate repetitive parts of the implementation.
6-
SMT_BITVECTOR_THEORY_PREDICATE(bvugt, unsigned_greater_than)
76
SMT_BITVECTOR_THEORY_PREDICATE(bvuge, unsigned_greater_than_or_equal)
87
SMT_BITVECTOR_THEORY_PREDICATE(bvslt, signed_less_than)
98
SMT_BITVECTOR_THEORY_PREDICATE(bvsle, signed_less_than_or_equal)

src/solvers/smt2_incremental/smt_bit_vector_theory.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ class smt_bit_vector_theoryt
4040
static const smt_function_application_termt::factoryt<
4141
unsigned_less_than_or_equalt>
4242
unsigned_less_than_or_equal;
43+
44+
struct unsigned_greater_thant final
45+
{
46+
static const char *identifier();
47+
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
48+
static void validate(const smt_termt &lhs, const smt_termt &rhs);
49+
};
50+
static const smt_function_application_termt::factoryt<unsigned_greater_thant>
51+
unsigned_greater_than;
4352
};
4453

4554
#endif // CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_BIT_VECTOR_THEORY_H

0 commit comments

Comments
 (0)