mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
fix missing parity propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
b581cbf062
commit
3c035daaa6
1 changed files with 5 additions and 8 deletions
|
@ -669,8 +669,7 @@ namespace polysat {
|
|||
auto& m = s.var2pdd(x);
|
||||
unsigned N = m.power_of_2();
|
||||
pdd y = m.zero();
|
||||
pdd a = m.zero();
|
||||
pdd b = m.zero();
|
||||
pdd a = y, b = y;
|
||||
pdd X = s.var(x);
|
||||
if (!is_AxB_eq_0(x, axb_l_y, a, b, y))
|
||||
return false;
|
||||
|
@ -741,7 +740,7 @@ namespace polysat {
|
|||
//
|
||||
// if b has at most b_parity, then a*x has at most b_parity
|
||||
//
|
||||
else if (!is_forced_eq(b, 0)) {
|
||||
if (!is_forced_eq(b, 0)) {
|
||||
unsigned b_parity = 1;
|
||||
bool found = false;
|
||||
for (; b_parity < N; ++b_parity) {
|
||||
|
@ -767,9 +766,6 @@ namespace polysat {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// verbose_stream() << "no propagation " << axb_l_y << " parity " << a_parity << "\n";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -783,7 +779,8 @@ namespace polysat {
|
|||
auto& m = s.var2pdd(x);
|
||||
unsigned N = m.power_of_2();
|
||||
pdd y = m.zero();
|
||||
pdd a = y, b = y, X = y;
|
||||
pdd a = y, b = y;
|
||||
pdd X = s.var(x);
|
||||
if (!is_AxB_diseq_0(x, axb_l_y, a, b, y))
|
||||
return false;
|
||||
if (!is_forced_eq(b, 0))
|
||||
|
@ -926,7 +923,7 @@ namespace polysat {
|
|||
rhs = b2 - a2*(b3 * a3_inv);
|
||||
}
|
||||
if (!change) {
|
||||
IF_VERBOSE(0, verbose_stream() << "missed factor equality " << c << " " << a_l_b << "\n");
|
||||
IF_VERBOSE(1, verbose_stream() << "missed factor equality " << c << " " << a_l_b << "\n");
|
||||
continue;
|
||||
}
|
||||
signed_constraint conseq = a_l_b.is_strict() ? s.ult(lhs, rhs) : s.ule(lhs, rhs);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue