3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-26 18:45:33 +00:00

port Grobner, add fixed var dependency to Horner's scheme

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Lev Nachmanson 2019-10-17 12:07:15 -07:00
parent 628bbcc676
commit b3fc12ffdc
11 changed files with 70 additions and 43 deletions

View file

@ -103,27 +103,33 @@ bool intervals::separated_from_zero_on_upper(const interval& i) const {
}
bool intervals::check_interval_for_conflict_on_zero(const interval & i) {
return check_interval_for_conflict_on_zero_lower(i) || check_interval_for_conflict_on_zero_upper(i);
bool intervals::check_interval_for_conflict_on_zero(const interval & i, ci_dependency * fixed_var_deps) {
return check_interval_for_conflict_on_zero_lower(i, fixed_var_deps) || check_interval_for_conflict_on_zero_upper(i, fixed_var_deps);
}
bool intervals::check_interval_for_conflict_on_zero_upper(const interval & i) {
bool intervals::check_interval_for_conflict_on_zero_upper(const interval & i, ci_dependency* fixed_var_deps) {
if (!separated_from_zero_on_upper(i))
return false;
add_empty_lemma();
svector<lp::constraint_index> expl;
if (fixed_var_deps)
m_dep_manager.linearize(fixed_var_deps, expl);
m_dep_manager.linearize(i.m_upper_dep, expl);
_().current_expl().add_expl(expl);
TRACE("nla_solver", print_lemma(tout););
return true;
}
bool intervals::check_interval_for_conflict_on_zero_lower(const interval & i) {
bool intervals::check_interval_for_conflict_on_zero_lower(const interval & i, ci_dependency* fixed_var_deps) {
if (!separated_from_zero_on_lower(i))
return false;
add_empty_lemma();
svector<lp::constraint_index> expl;
if (fixed_var_deps)
m_dep_manager.linearize(fixed_var_deps, expl);
m_dep_manager.linearize(i.m_lower_dep, expl);
_().current_expl().add_expl(expl);
TRACE("nla_solver", print_lemma(tout););