mirror of
https://github.com/Z3Prover/z3
synced 2025-08-23 19:47:52 +00:00
This commit is contained in:
parent
d450fd4227
commit
abe3ef2382
3 changed files with 15 additions and 28 deletions
|
@ -284,7 +284,6 @@ namespace bv {
|
|||
}
|
||||
|
||||
void solver::register_true_false_bit(theory_var v, unsigned idx) {
|
||||
SASSERT(s().value(m_bits[v][idx]) != l_undef);
|
||||
sat::literal l = m_bits[v][idx];
|
||||
SASSERT(l == mk_true() || ~l == mk_true());
|
||||
bool is_true = l == mk_true();
|
||||
|
@ -369,7 +368,7 @@ namespace bv {
|
|||
sat::literal solver::mk_true() {
|
||||
if (m_true == sat::null_literal) {
|
||||
ctx.push(value_trail<sat::literal>(m_true));
|
||||
m_true = ctx.internalize(m.mk_true(), false, false, false);
|
||||
m_true = ctx.internalize(m.mk_true(), false, true, false);
|
||||
}
|
||||
return m_true;
|
||||
}
|
||||
|
|
|
@ -95,14 +95,20 @@ namespace bv {
|
|||
result.reset();
|
||||
unsigned i = 0;
|
||||
for (literal b : m_bits[v]) {
|
||||
switch (ctx.s().value(b)) {
|
||||
case l_false:
|
||||
break;
|
||||
case l_undef:
|
||||
return false;
|
||||
case l_true:
|
||||
if (b == ~m_true)
|
||||
;
|
||||
else if (b == m_true)
|
||||
result += power2(i);
|
||||
break;
|
||||
else {
|
||||
switch (ctx.s().value(b)) {
|
||||
case l_false:
|
||||
break;
|
||||
case l_undef:
|
||||
return false;
|
||||
case l_true:
|
||||
result += power2(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue