3
0
Fork 0
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:
Nikolaj Bjorner 2020-10-18 15:28:21 -07:00 committed by GitHub
parent b77c57451f
commit 2f756da294
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
62 changed files with 2309 additions and 1257 deletions

View file

@ -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;