mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 03:45:51 +00:00
Emons (#92)
* fix loop in equiv_monomials Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fixes Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * pp Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix prev/next update Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * generalize factors Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
7e67e1ce99
commit
ef6fd1cf8e
7 changed files with 59 additions and 60 deletions
|
@ -233,7 +233,7 @@ namespace nla {
|
|||
if (m_cg_table.find(v, w)) {
|
||||
SASSERT(w != v);
|
||||
unsigned idxr = m_var2index[w];
|
||||
unsigned idxl = m_canonized[idxr].m_next;
|
||||
unsigned idxl = m_canonized[idxr].m_prev;
|
||||
m_canonized[idx].m_next = idxr;
|
||||
m_canonized[idx].m_prev = idxl;
|
||||
m_canonized[idxr].m_prev = idx;
|
||||
|
@ -324,13 +324,22 @@ namespace nla {
|
|||
|
||||
// yes, assume that monomials are non-empty.
|
||||
emonomials::pf_iterator::pf_iterator(emonomials const& m, monomial const& mon, bool at_end):
|
||||
m(m), m_mon(mon), m_it(iterator(m, m.head(mon[0]), at_end)), m_end(iterator(m, m.head(mon[0]), true)) {
|
||||
m(m), m_mon(&mon), m_it(iterator(m, m.head(mon[0]), at_end)), m_end(iterator(m, m.head(mon[0]), true)) {
|
||||
fast_forward();
|
||||
}
|
||||
|
||||
emonomials::pf_iterator::pf_iterator(emonomials const& m, lpvar v, bool at_end):
|
||||
m(m), m_mon(nullptr), m_it(iterator(m, m.head(v), at_end)), m_end(iterator(m, m.head(v), true)) {
|
||||
fast_forward();
|
||||
}
|
||||
|
||||
void emonomials::pf_iterator::fast_forward() {
|
||||
for (; m_it != m_end; ++m_it) {
|
||||
if (m_mon.var() != (*m_it).var() && m.canonize_divides(m_mon, *m_it) && !m.is_visited(*m_it)) {
|
||||
if (m_mon && m_mon->var() != (*m_it).var() && m.canonize_divides(*m_mon, *m_it) && !m.is_visited(*m_it)) {
|
||||
m.set_visited(*m_it);
|
||||
break;
|
||||
}
|
||||
if (!m_mon && !m.is_visited(*m_it)) {
|
||||
m.set_visited(*m_it);
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue