@@ -18,6 +18,7 @@ Module Name:
18
18
19
19
--*/
20
20
21
+ #include " ast/ast_ll_pp.h"
21
22
#include " ast/sls/bv_sls.h"
22
23
23
24
namespace bv {
@@ -60,13 +61,15 @@ namespace bv {
60
61
}
61
62
62
63
void sls_terms::ensure_binary_core (expr* e) {
64
+ if (m_translated.get (e->get_id (), nullptr ))
65
+ return ;
66
+
63
67
app* a = to_app (e);
64
68
auto arg = [&](unsigned i) {
65
69
return m_translated.get (a->get_arg (i)->get_id ());
66
70
};
67
71
unsigned num_args = a->get_num_args ();
68
72
expr_ref r (m);
69
- expr* x, * y;
70
73
#define FOLD_OP (oper ) \
71
74
r = arg (0 ); \
72
75
for (unsigned i = 1 ; i < num_args; ++i)\
@@ -106,20 +109,20 @@ namespace bv {
106
109
es.push_back (m.mk_not (m.mk_eq (arg (i), arg (j))));
107
110
r = m.mk_and (es);
108
111
}
109
- else if (bv.is_bv_sdiv (e, x, y ) || bv.is_bv_sdiv0 (e, x, y ) || bv.is_bv_sdivi (e, x, y )) {
110
- r = mk_sdiv (x, y );
112
+ else if (bv.is_bv_sdiv (e) || bv.is_bv_sdiv0 (e) || bv.is_bv_sdivi (e)) {
113
+ r = mk_sdiv (arg ( 0 ), arg ( 1 ) );
111
114
}
112
- else if (bv.is_bv_smod (e, x, y ) || bv.is_bv_smod0 (e, x, y ) || bv.is_bv_smodi (e, x, y )) {
113
- r = mk_smod (x, y );
115
+ else if (bv.is_bv_smod (e) || bv.is_bv_smod0 (e) || bv.is_bv_smodi (e)) {
116
+ r = mk_smod (arg ( 0 ), arg ( 1 ) );
114
117
}
115
- else if (bv.is_bv_srem (e, x, y ) || bv.is_bv_srem0 (e, x, y ) || bv.is_bv_sremi (e, x, y )) {
116
- r = mk_srem (x, y );
118
+ else if (bv.is_bv_srem (e) || bv.is_bv_srem0 (e) || bv.is_bv_sremi (e)) {
119
+ r = mk_srem (arg ( 0 ), arg ( 1 ) );
117
120
}
118
121
else {
119
122
for (unsigned i = 0 ; i < num_args; ++i)
120
- m_todo .push_back (arg (i));
121
- r = m.mk_app (a->get_decl (), num_args, m_todo .data ());
122
- m_todo .reset ();
123
+ m_args .push_back (arg (i));
124
+ r = m.mk_app (a->get_decl (), num_args, m_args .data ());
125
+ m_args .reset ();
123
126
}
124
127
m_translated.setx (e->get_id (), r);
125
128
}
0 commit comments