mirror of
https://github.com/Z3Prover/z3
synced 2025-06-28 08:58:44 +00:00
propagate monomial is nla
This commit is contained in:
parent
318d7d7564
commit
41f59cb1ed
11 changed files with 210 additions and 115 deletions
|
@ -1532,11 +1532,12 @@ namespace smt {
|
|||
bool max,
|
||||
bool maintain_integrality,
|
||||
bool& has_shared) {
|
||||
return UNBOUNDED;
|
||||
|
||||
m_stats.m_max_min++;
|
||||
unsigned best_efforts = 0;
|
||||
bool inc = false;
|
||||
|
||||
|
||||
|
||||
SASSERT(!maintain_integrality || valid_assignment());
|
||||
SASSERT(satisfy_bounds());
|
||||
|
||||
|
|
|
@ -511,6 +511,7 @@ bool theory_arith<Ext>::propagate_nl_downward(expr * n, var_power_pair const& p)
|
|||
*/
|
||||
template<typename Ext>
|
||||
bool theory_arith<Ext>::propagate_nl_bounds(expr * m) {
|
||||
return false;
|
||||
TRACE("non_linear", tout << "propagate several bounds using:\n"; display_monomial(tout, m); tout << "\n";);
|
||||
bool result = propagate_nl_upward(m);
|
||||
buffer<var_power_pair> vp;
|
||||
|
@ -530,6 +531,7 @@ bool theory_arith<Ext>::propagate_nl_bounds(expr * m) {
|
|||
*/
|
||||
template<typename Ext>
|
||||
bool theory_arith<Ext>::propagate_nl_bounds() {
|
||||
return false;
|
||||
m_dep_manager.reset();
|
||||
bool propagated = false;
|
||||
for (unsigned i = 0; i < m_nl_monomials.size(); i++) {
|
||||
|
@ -1632,6 +1634,7 @@ bool theory_arith<Ext>::is_cross_nested_consistent(row const & r) {
|
|||
*/
|
||||
template<typename Ext>
|
||||
bool theory_arith<Ext>::is_cross_nested_consistent(svector<theory_var> const & nl_cluster) {
|
||||
return true;
|
||||
for (theory_var v : nl_cluster) {
|
||||
if (!is_base(v))
|
||||
continue;
|
||||
|
|
|
@ -2163,8 +2163,14 @@ public:
|
|||
if (!m_nla)
|
||||
return;
|
||||
m_nla->propagate(m_nla_lemma_vector);
|
||||
for (nla::lemma const& l : m_nla_lemma_vector)
|
||||
false_case_of_check_nla(l);
|
||||
if (lp().get_status() == lp::lp_status::INFEASIBLE) {
|
||||
TRACE("arith", tout << "propagation conflict\n";);
|
||||
get_infeasibility_explanation_and_set_conflict();
|
||||
}
|
||||
else {
|
||||
for (nla::lemma const& l : m_nla_lemma_vector)
|
||||
false_case_of_check_nla(l);
|
||||
}
|
||||
}
|
||||
|
||||
bool should_propagate() const {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue