3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 09:05:31 +00:00

monotone overflow

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2024-01-01 16:54:59 -08:00
parent d91820fe51
commit 141ba7661f

View file

@ -208,14 +208,16 @@ namespace polysat {
bool monomials::non_overflow_monotone(monomial const& mon) {
rational product(1);
unsigned big_index = UINT_MAX;
for (unsigned i = 0; i < mon.args.size(); ++i) {
auto const& val = mon.arg_vals[i];
product *= val;
if (val > mon.val)
big_index = i;
}
for (auto const& val : mon.arg_vals)
if (val == 0)
return false;
for (unsigned i = 0; i < mon.args.size(); ++i)
if (mon.arg_vals[i] > mon.val)
big_index = i;
if (big_index == UINT_MAX)
return false;
for (auto const& val : mon.arg_vals)
product *= val;
if (product > mon.var.manager().max_value())
return false;
pdd p = mon.args[0];