mirror of
https://github.com/Z3Prover/z3
synced 2025-08-24 20:16:00 +00:00
Nlsat simplify (#7227)
* dev branch for simplification Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * bug fixes Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * bugfixes Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix factorization Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * separate out simplification functionality * reorder initialization Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * reorder initialization Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * Update README.md * initial warppers for seq-map/seq-fold Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * expose fold as well Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add C++ bindings for sequence operations Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add abs function to API Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add parameter validation to ternary and 4-ary functions for API #7219 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add pre-processing and reorder Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add pre-processing and reorder Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> --------- Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
e036a5bd9b
commit
8fe357f1f2
13 changed files with 1275 additions and 844 deletions
|
@ -2594,27 +2594,28 @@ namespace algebraic_numbers {
|
|||
|
||||
void int_lt(numeral const & a, numeral & b) {
|
||||
scoped_mpz v(qm());
|
||||
if (!a.is_basic())
|
||||
refine_until_prec(const_cast<numeral&>(a), 1);
|
||||
if (a.is_basic()) {
|
||||
qm().floor(basic_value(a), v);
|
||||
qm().dec(v);
|
||||
}
|
||||
else {
|
||||
refine_until_prec(const_cast<numeral&>(a), 1);
|
||||
bqm().floor(qm(), lower(a.to_algebraic()), v);
|
||||
}
|
||||
else
|
||||
bqm().floor(qm(), lower(a.to_algebraic()), v);
|
||||
m_wrapper.set(b, v);
|
||||
}
|
||||
|
||||
void int_gt(numeral const & a, numeral & b) {
|
||||
scoped_mpz v(qm());
|
||||
if (!a.is_basic())
|
||||
refine_until_prec(const_cast<numeral&>(a), 1);
|
||||
if (a.is_basic()) {
|
||||
qm().ceil(basic_value(a), v);
|
||||
qm().inc(v);
|
||||
}
|
||||
else {
|
||||
refine_until_prec(const_cast<numeral&>(a), 1);
|
||||
else
|
||||
bqm().ceil(qm(), upper(a.to_algebraic()), v);
|
||||
}
|
||||
|
||||
m_wrapper.set(b, v);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue