mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
debugging
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
0a5b03194c
commit
db18c7206a
2 changed files with 18 additions and 7 deletions
|
@ -407,7 +407,6 @@ namespace polysat {
|
|||
fi.side_cond.push_back(s.eq(b1, e1));
|
||||
if (b2 != e2)
|
||||
fi.side_cond.push_back(s.eq(b2, e2));
|
||||
IF_VERBOSE(0, verbose_stream() << fi.interval << " " << fi.side_cond << "\n");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -39,6 +39,10 @@ namespace polysat {
|
|||
if (c.is_currently_true(s))
|
||||
continue;
|
||||
auto i = inequality::from_ule(c);
|
||||
#if 0
|
||||
if (try_mul_bounds(v, core, i))
|
||||
return true;
|
||||
#endif
|
||||
if (try_ugt_x(v, core, i))
|
||||
return true;
|
||||
if (try_ugt_y(v, core, i))
|
||||
|
@ -192,10 +196,10 @@ namespace polysat {
|
|||
*/
|
||||
bool saturation::is_AxB_eq_0(pvar x, inequality const& i, pdd& a, pdd& b, pdd& y) {
|
||||
y = i.rhs();
|
||||
if (!y.is_val() || y.val() != 0)
|
||||
rational y_val;
|
||||
if (!s.try_eval(y, y_val) || y_val != 0)
|
||||
return false;
|
||||
pdd aa = a, bb = b;
|
||||
return i.lhs().degree(x) == 1 && (i.lhs().factor(x, 1, aa, bb), aa == a && bb == b);
|
||||
return i.lhs().degree(x) == 1 && (i.lhs().factor(x, 1, a, b), true);
|
||||
}
|
||||
|
||||
bool saturation::verify_AxB_eq_0(pvar x, inequality const& i, pdd const& a, pdd const& b, pdd const& y) {
|
||||
|
@ -453,13 +457,17 @@ namespace polysat {
|
|||
if (!is_AxB_eq_0(x, axb_l_y, a, b, y))
|
||||
return false;
|
||||
|
||||
IF_VERBOSE(0, verbose_stream() << " mul bounds " << x << " " << axb_l_y.as_signed_constraint() << "\n");
|
||||
|
||||
if (!is_forced_eq(b, 0))
|
||||
return false;
|
||||
|
||||
#if 0
|
||||
// we could also use x.val(), a.val() if they exist and enforce bounds
|
||||
if (s.try_eval(a, a_val) && s.try_eval(X, x_val) && a_val*x_val != 0) {
|
||||
|
||||
#if 1
|
||||
// we could also use x.val(), a.val() if they exist and enforce bounds
|
||||
rational a_val, x_val;
|
||||
if (s.try_eval(a, a_val) && s.try_eval(X, x_val) && a_val*x_val != 0) {
|
||||
IF_VERBOSE(0, verbose_stream() << " mul bounds " << axb_l_y.as_signed_constraint() << "\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -489,6 +497,10 @@ namespace polysat {
|
|||
return false;
|
||||
if (!is_forced_diseq(a, 0, a_eq_0))
|
||||
return false;
|
||||
|
||||
IF_VERBOSE(0, verbose_stream() << " mul bounds " << axb_l_y.as_signed_constraint() << "\n");
|
||||
return false;
|
||||
|
||||
m_lemma.reset();
|
||||
m_lemma.insert(~s.eq(b));
|
||||
m_lemma.insert(~s.eq(y));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue