mirror of
https://github.com/Z3Prover/z3
synced 2025-04-26 18:45:33 +00:00
port Grobner, add fixed var dependencies to create_sum_from_row()
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
parent
b3fc12ffdc
commit
7fbf3e0707
11 changed files with 87 additions and 44 deletions
|
@ -103,32 +103,35 @@ bool intervals::separated_from_zero_on_upper(const interval& i) const {
|
|||
}
|
||||
|
||||
|
||||
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(const interval & i, const svector<lp::constraint_index>& cs) {
|
||||
return check_interval_for_conflict_on_zero_lower(i, cs) || check_interval_for_conflict_on_zero_upper(i, cs);
|
||||
}
|
||||
|
||||
bool intervals::check_interval_for_conflict_on_zero_upper(const interval & i, ci_dependency* fixed_var_deps) {
|
||||
bool intervals::check_interval_for_conflict_on_zero_upper(
|
||||
const interval & i,
|
||||
const svector<lp::constraint_index>& fixed_vars_constraints) {
|
||||
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);
|
||||
|
||||
for (auto c : fixed_vars_constraints) {
|
||||
expl.push_back(c);
|
||||
}
|
||||
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, ci_dependency* fixed_var_deps) {
|
||||
bool intervals::check_interval_for_conflict_on_zero_lower(const interval & i, const svector<lp::constraint_index>& fixed_vars_constraints) {
|
||||
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);
|
||||
for (auto c : fixed_vars_constraints) {
|
||||
expl.push_back(c);
|
||||
}
|
||||
|
||||
m_dep_manager.linearize(i.m_lower_dep, expl);
|
||||
_().current_expl().add_expl(expl);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue