mirror of
https://github.com/Z3Prover/z3
synced 2025-05-12 02:04:43 +00:00
na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
4fad0385de
commit
19099244c4
5 changed files with 49 additions and 14 deletions
|
@ -75,11 +75,18 @@ namespace polysat {
|
|||
}
|
||||
if (v != null_var) {
|
||||
bddv const& x = s.var2bits(v).var();
|
||||
bddv l = a * x + b;
|
||||
bddv r = c * x + d;
|
||||
bdd xs = is_positive() ? (l <= r) : (l > r);
|
||||
s.push_cjust(v, this);
|
||||
s.intersect_viable(v, xs);
|
||||
// hacky special case
|
||||
if (a == 1 && b == 0 && c == 0 && d == 0)
|
||||
// x <= 0
|
||||
s.intersect_viable(v, is_positive() ? x.all0() : !x.all0());
|
||||
else {
|
||||
IF_VERBOSE(10, verbose_stream() << a << "*x + " << b << (is_positive() ? " <= " : " > ") << c << "*x + " << d << "\n");
|
||||
bddv l = a * x + b;
|
||||
bddv r = c * x + d;
|
||||
bdd xs = is_positive() ? (l <= r) : (l > r);
|
||||
s.intersect_viable(v, xs);
|
||||
}
|
||||
|
||||
rational val;
|
||||
if (s.find_viable(v, val) == dd::find_t::singleton) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue