3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-28 08:58:44 +00:00

transfer propagate monomial bounds to nla_solver

This commit is contained in:
Lev Nachmanson 2023-09-21 11:27:53 -07:00
parent 536930b4a1
commit e31cecf5db
7 changed files with 243 additions and 183 deletions

View file

@ -264,7 +264,7 @@ class theory_lra::imp {
void ensure_nla() {
if (!m_nla) {
m_nla = alloc(nla::solver, *m_solver.get(), ctx().get_params(), m.limit());
m_nla = alloc(nla::solver, *m_solver.get(), ctx().get_params(), m.limit(), m_implied_bounds);
for (auto const& _s : m_scopes) {
(void)_s;
m_nla->push();
@ -2198,13 +2198,10 @@ public:
finish_bound_propagation();
}
void calculate_implied_bounds_for_monic(lpvar monic_var, const svector<lpvar>& vars) {
m_bp.propagate_monic(monic_var, vars);
}
void propagate_bounds_for_touched_monomials() {
m_nla->init_bound_propagation();
for (unsigned v : m_nla->monics_with_changed_bounds()) {
calculate_implied_bounds_for_monic(v, m_nla->get_core().emons()[v].vars());
m_nla->calculate_implied_bounds_for_monic(v);
}
m_nla->reset_monics_with_changed_bounds();
}