mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
simplify m_monomials_by_abs_vals
Signed-off-by: Lev <levnach@hotmail.com>
This commit is contained in:
parent
e4cbe980e9
commit
2d144cd774
2 changed files with 38 additions and 18 deletions
|
@ -82,9 +82,8 @@ struct vars_equivalence {
|
|||
vector<equiv> m_equivs; // all equivalences extracted from constraints
|
||||
std::unordered_map<rational,unsigned_vector> m_vars_by_abs_values;
|
||||
std::unordered_map<vector<rational>,
|
||||
vector<index_with_sign>,
|
||||
hash_vector>
|
||||
m_monomials_by_abs_vals;
|
||||
unsigned_vector,
|
||||
hash_vector> m_monomials_by_abs_vals;
|
||||
|
||||
std::function<rational(lpvar)> m_vvr;
|
||||
|
||||
|
@ -93,7 +92,7 @@ struct vars_equivalence {
|
|||
vars_equivalence(std::function<rational(lpvar)> vvr) : m_vvr(vvr) {}
|
||||
|
||||
const std::unordered_map<vector<rational>,
|
||||
vector<index_with_sign>,
|
||||
unsigned_vector,
|
||||
hash_vector>& monomials_by_abs_values() const {
|
||||
return m_monomials_by_abs_vals;
|
||||
}
|
||||
|
@ -223,7 +222,7 @@ struct vars_equivalence {
|
|||
void deregister_monomial_from_abs_vals(const monomial & m, unsigned i){
|
||||
int sign;
|
||||
auto key = get_sorted_abs_vals_from_mon(m, sign);
|
||||
SASSERT(m_monomials_by_abs_vals.find(key)->second.back() == index_with_sign(i, rational(sign)));
|
||||
SASSERT(m_monomials_by_abs_vals.find(key)->second.back() == i);
|
||||
m_monomials_by_abs_vals.find(key)->second.pop_back();
|
||||
}
|
||||
|
||||
|
@ -244,17 +243,15 @@ struct vars_equivalence {
|
|||
void register_monomial_in_abs_vals(unsigned i, const monomial & m ) {
|
||||
int sign;
|
||||
vector<rational> abs_vals = get_sorted_abs_vals_from_mon(m, sign);
|
||||
index_with_sign ms(i, rational(sign));
|
||||
auto it = m_monomials_by_abs_vals.find(abs_vals);
|
||||
|
||||
if (it == m_monomials_by_abs_vals.end()) {
|
||||
vector<index_with_sign> v;
|
||||
v.push_back(ms);
|
||||
unsigned_vector v;
|
||||
v.push_back(i);
|
||||
// v is a vector containing a single index_with_sign
|
||||
m_monomials_by_abs_vals.emplace(abs_vals, v);
|
||||
}
|
||||
else {
|
||||
it->second.push_back(ms);
|
||||
it->second.push_back(i);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue