3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-02 17:30:23 +00:00

adding user-propagator ability

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-08-17 22:39:55 -07:00
parent c13e3ce693
commit 152c95f72a
15 changed files with 305 additions and 21 deletions

View file

@ -465,6 +465,11 @@ namespace smt {
void theory_bv::fixed_var_eh(theory_var v) {
numeral val;
VERIFY(get_fixed_value(v, val));
enode* n = get_enode(v);
if (ctx.watches_fixed(n)) {
expr_ref num(m_util.mk_numeral(val, m.get_sort(n->get_owner())), m);
ctx.assign_fixed(n, num, m_bits[v]);
}
unsigned sz = get_bv_size(v);
value_sort_pair key(val, sz);
theory_var v2;
@ -528,8 +533,8 @@ namespace smt {
void theory_bv::internalize_num(app * n) {
SASSERT(!ctx.e_internalized(n));
numeral val;
unsigned sz;
m_util.is_numeral(n, val, sz);
unsigned sz = 0;
VERIFY(m_util.is_numeral(n, val, sz));
enode * e = mk_enode(n);
// internalizer is marking enodes as interpreted whenever the associated ast is a value and a constant.
// e->mark_as_interpreted();