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

for Clemens: ensure fixed values are propagated after registration

Also allow to register expressions that the rewriter changes to ensure they get picked up.
This commit is contained in:
Nikolaj Bjorner 2022-01-19 14:38:11 +01:00
parent 5b0389615b
commit 0f03ef4ab0
7 changed files with 129 additions and 45 deletions

View file

@ -519,6 +519,21 @@ namespace smt {
}
}
bool theory_bv::is_fixed(theory_var v, expr_ref& val, literal_vector& lits) {
numeral r;
enode* n = get_enode(v);
if (!get_fixed_value(v, r))
return false;
val = m_util.mk_numeral(r, n->get_sort());
for (literal b : m_bits[v]) {
if (ctx.get_assignment(b) == l_false)
b.neg();
lits.push_back(b);
}
return true;
}
bool theory_bv::get_fixed_value(theory_var v, numeral & result) const {
result.reset();
unsigned i = 0;