mirror of
https://github.com/Z3Prover/z3
synced 2025-11-23 14:11:28 +00:00
add toggle to use polynomial translation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
33709d3abb
commit
92bc39dab5
1 changed files with 1 additions and 15 deletions
|
|
@ -47,8 +47,6 @@ struct solver::imp {
|
||||||
return m_nla_core.m_to_refine.size() != 0;
|
return m_nla_core.m_to_refine.size() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void reset() {
|
void reset() {
|
||||||
m_values = nullptr;
|
m_values = nullptr;
|
||||||
m_tmp1 = nullptr; m_tmp2 = nullptr;
|
m_tmp1 = nullptr; m_tmp2 = nullptr;
|
||||||
|
|
@ -57,14 +55,6 @@ struct solver::imp {
|
||||||
m_lp2nl.reset();
|
m_lp2nl.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct eq {
|
|
||||||
bool operator()(unsigned_vector const &a, unsigned_vector const &b) const {
|
|
||||||
return a == b;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
map<unsigned_vector, unsigned, svector_hash<unsigned_hash>, eq> m_vars2mon;
|
|
||||||
// Create polynomial definition for variable v used in setup_assignment_solver.
|
// Create polynomial definition for variable v used in setup_assignment_solver.
|
||||||
// Side-effects: updates m_vars2mon when v is a monic variable.
|
// Side-effects: updates m_vars2mon when v is a monic variable.
|
||||||
void mk_definition(unsigned v, polynomial_ref_vector &definitions) {
|
void mk_definition(unsigned v, polynomial_ref_vector &definitions) {
|
||||||
|
|
@ -72,10 +62,7 @@ struct solver::imp {
|
||||||
polynomial::polynomial_ref p(pm);
|
polynomial::polynomial_ref p(pm);
|
||||||
if (m_nla_core.emons().is_monic_var(v)) {
|
if (m_nla_core.emons().is_monic_var(v)) {
|
||||||
auto const &m = m_nla_core.emons()[v];
|
auto const &m = m_nla_core.emons()[v];
|
||||||
auto vars = m.vars();
|
for (auto v2 : m.vars()) {
|
||||||
std::sort(vars.begin(), vars.end());
|
|
||||||
m_vars2mon.insert(vars, v);
|
|
||||||
for (auto v2 : vars) {
|
|
||||||
auto pv = definitions.get(v2);
|
auto pv = definitions.get(v2);
|
||||||
if (!p)
|
if (!p)
|
||||||
p = pv;
|
p = pv;
|
||||||
|
|
@ -99,7 +86,6 @@ struct solver::imp {
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup_solver_poly() {
|
void setup_solver_poly() {
|
||||||
m_vars2mon.reset();
|
|
||||||
m_coi.init();
|
m_coi.init();
|
||||||
auto &pm = m_nlsat->pm();
|
auto &pm = m_nlsat->pm();
|
||||||
polynomial_ref_vector definitions(pm);
|
polynomial_ref_vector definitions(pm);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue