mirror of
https://github.com/Z3Prover/z3
synced 2025-05-08 00:05:46 +00:00
adding dt-solver (#4739)
* adding dt-solver Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * dt Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * move mbp to self-contained module Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * files Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * Create CMakeLists.txt * dt Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * rename to bool_var2expr to indicate type class * mbp * na
This commit is contained in:
parent
b77c57451f
commit
2f756da294
62 changed files with 2309 additions and 1257 deletions
|
@ -896,6 +896,34 @@ bool arith_util::is_extended_numeral(expr* term, rational& r) const {
|
|||
if (is_to_real(term, term)) {
|
||||
continue;
|
||||
}
|
||||
if (is_mul(term)) {
|
||||
rational r(mul), n(0);
|
||||
for (expr* arg : *to_app(term)) {
|
||||
if (!is_extended_numeral(arg, n))
|
||||
return false;
|
||||
r *= n;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (is_add(term)) {
|
||||
rational r(0), n(0);
|
||||
for (expr* arg : *to_app(term)) {
|
||||
if (!is_extended_numeral(arg, n))
|
||||
return false;
|
||||
r += n;
|
||||
}
|
||||
r *= mul;
|
||||
return true;
|
||||
}
|
||||
rational k1, k2;
|
||||
expr* t1, *t2;
|
||||
if (is_sub(term, t1, t2) &&
|
||||
is_extended_numeral(t1, k1) &&
|
||||
is_extended_numeral(t2, k2)) {
|
||||
r = k1 - k2;
|
||||
r *= mul;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} while (false);
|
||||
return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue