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:
parent
5b0389615b
commit
0f03ef4ab0
7 changed files with 129 additions and 45 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue