Skip to content

Commit 817d995

Browse files
committed
Remove definition of unsigned_less_than from X-Macro definition.
And substitute it for a concrete class in `smt_bit_vector_theory.cpp`.
1 parent 637f138 commit 817d995

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
@@ -42,3 +42,26 @@ static void validate_bit_vector_predicate_arguments(
4242
smt_bit_vector_theoryt::the_name{};
4343
#include "smt_bit_vector_theory.def"
4444
#undef SMT_BITVECTOR_THEORY_PREDICATE
45+
46+
const char *smt_bit_vector_theoryt::unsigned_less_thant::identifier()
47+
{
48+
return "bvult";
49+
}
50+
51+
smt_sortt smt_bit_vector_theoryt::unsigned_less_thant::return_sort(
52+
const smt_termt &lhs,
53+
const smt_termt &rhs)
54+
{
55+
return smt_bool_sortt{};
56+
}
57+
58+
void smt_bit_vector_theoryt::unsigned_less_thant::validate(
59+
const smt_termt &lhs,
60+
const smt_termt &rhs)
61+
{
62+
validate_bit_vector_predicate_arguments(lhs, rhs);
63+
}
64+
65+
const smt_function_application_termt::factoryt<
66+
smt_bit_vector_theoryt::unsigned_less_thant>
67+
smt_bit_vector_theoryt::unsigned_less_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(bvult, unsigned_less_than)
76
SMT_BITVECTOR_THEORY_PREDICATE(bvule, unsigned_less_than_or_equal)
87
SMT_BITVECTOR_THEORY_PREDICATE(bvugt, unsigned_greater_than)
98
SMT_BITVECTOR_THEORY_PREDICATE(bvuge, unsigned_greater_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
@@ -20,6 +20,15 @@ class smt_bit_vector_theoryt
2020
static const smt_function_application_termt::factoryt<the_name##t> the_name;
2121
#include "smt_bit_vector_theory.def"
2222
#undef SMT_BITVECTOR_THEORY_PREDICATE
23+
24+
struct unsigned_less_thant final
25+
{
26+
static const char *identifier();
27+
static smt_sortt return_sort(const smt_termt &lhs, const smt_termt &rhs);
28+
static void validate(const smt_termt &lhs, const smt_termt &rhs);
29+
};
30+
static const smt_function_application_termt::factoryt<unsigned_less_thant>
31+
unsigned_less_than;
2332
};
2433

2534
#endif // CPROVER_SOLVERS_SMT2_INCREMENTAL_SMT_BIT_VECTOR_THEORY_H

0 commit comments

Comments
 (0)