mirror of
https://github.com/Z3Prover/z3
synced 2025-08-23 19:47:52 +00:00
add stubs for monomial unit propagation
This commit is contained in:
parent
00593609c5
commit
38b131386d
7 changed files with 84 additions and 10 deletions
|
@ -19,19 +19,30 @@ Description:
|
|||
namespace nla {
|
||||
|
||||
void divisions::add_idivision(lpvar q, lpvar x, lpvar y) {
|
||||
auto& lra = m_core.lra;
|
||||
if (x == null_lpvar || y == null_lpvar || q == null_lpvar)
|
||||
return;
|
||||
if (lp::tv::is_term(x) || lp::tv::is_term(y) || lp::tv::is_term(q))
|
||||
return;
|
||||
if (lp::tv::is_term(x))
|
||||
x = lra.map_term_index_to_column_index(x);
|
||||
if (lp::tv::is_term(y))
|
||||
y = lra.map_term_index_to_column_index(y);
|
||||
if (lp::tv::is_term(q))
|
||||
q = lra.map_term_index_to_column_index(q);
|
||||
m_idivisions.push_back({q, x, y});
|
||||
m_core.trail().push(push_back_vector(m_idivisions));
|
||||
}
|
||||
|
||||
void divisions::add_rdivision(lpvar q, lpvar x, lpvar y) {
|
||||
auto& lra = m_core.lra;
|
||||
if (x == null_lpvar || y == null_lpvar || q == null_lpvar)
|
||||
return;
|
||||
if (lp::tv::is_term(x) || lp::tv::is_term(y) || lp::tv::is_term(q))
|
||||
return;
|
||||
if (lp::tv::is_term(x))
|
||||
x = lra.map_term_index_to_column_index(x);
|
||||
if (lp::tv::is_term(y))
|
||||
y = lra.map_term_index_to_column_index(y);
|
||||
if (lp::tv::is_term(q))
|
||||
q = lra.map_term_index_to_column_index(q);
|
||||
|
||||
m_rdivisions.push_back({ q, x, y });
|
||||
m_core.trail().push(push_back_vector(m_rdivisions));
|
||||
}
|
||||
|
@ -52,7 +63,7 @@ namespace nla {
|
|||
// y2 <= y1 < 0 & x1 <= x2 <= 0 => x1/y1 >= x2/y2
|
||||
|
||||
void divisions::check() {
|
||||
core& c = m_core;
|
||||
core& c = m_core;
|
||||
if (c.use_nra_model())
|
||||
return;
|
||||
|
||||
|
@ -132,7 +143,7 @@ namespace nla {
|
|||
auto x2val = c.val(x2);
|
||||
auto y2val = c.val(y2);
|
||||
auto q2val = c.val(q2);
|
||||
if (monotonicity(x, xval, y, yval, r, rval, x2, x2val, y2, y2val, q2, q2val))
|
||||
if (monotonicity(x, xval, y, yval, r, rval, x2, x2val, y2, y2val, q2, q2val))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue