mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
This commit is contained in:
parent
5de5f5a442
commit
e27a71bbcb
|
@ -44,6 +44,7 @@ class pb_preprocess_tactic : public tactic {
|
||||||
struct rec { unsigned_vector pos, neg; rec() { } };
|
struct rec { unsigned_vector pos, neg; rec() { } };
|
||||||
typedef obj_map<app, rec> var_map;
|
typedef obj_map<app, rec> var_map;
|
||||||
ast_manager& m;
|
ast_manager& m;
|
||||||
|
expr_ref_vector m_trail;
|
||||||
pb_util pb;
|
pb_util pb;
|
||||||
var_map m_vars;
|
var_map m_vars;
|
||||||
unsigned_vector m_ge;
|
unsigned_vector m_ge;
|
||||||
|
@ -99,7 +100,7 @@ class pb_preprocess_tactic : public tactic {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
pb_preprocess_tactic(ast_manager& m, params_ref const& p = params_ref()):
|
pb_preprocess_tactic(ast_manager& m, params_ref const& p = params_ref()):
|
||||||
m(m), pb(m), m_r(m) {}
|
m(m), m_trail(m), pb(m), m_r(m) {}
|
||||||
|
|
||||||
~pb_preprocess_tactic() override {}
|
~pb_preprocess_tactic() override {}
|
||||||
|
|
||||||
|
@ -157,7 +158,7 @@ public:
|
||||||
m_progress = false;
|
m_progress = false;
|
||||||
// first eliminate variables
|
// first eliminate variables
|
||||||
var_map::iterator it = next_resolvent(m_vars.begin());
|
var_map::iterator it = next_resolvent(m_vars.begin());
|
||||||
while (it != m_vars.end()) {
|
while (it != m_vars.end()) {
|
||||||
app * e = it->m_key;
|
app * e = it->m_key;
|
||||||
rec const& r = it->m_value;
|
rec const& r = it->m_value;
|
||||||
TRACE("pb", tout << mk_pp(e, m) << " " << r.pos.size() << " " << r.neg.size() << "\n";);
|
TRACE("pb", tout << mk_pp(e, m) << " " << r.pos.size() << " " << r.neg.size() << "\n";);
|
||||||
|
@ -235,6 +236,7 @@ private:
|
||||||
m_ge.reset();
|
m_ge.reset();
|
||||||
m_other.reset();
|
m_other.reset();
|
||||||
m_vars.reset();
|
m_vars.reset();
|
||||||
|
m_trail.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
expr* negate(expr* e) {
|
expr* negate(expr* e) {
|
||||||
|
@ -410,6 +412,7 @@ private:
|
||||||
void insert(unsigned i, app* e, bool pos) {
|
void insert(unsigned i, app* e, bool pos) {
|
||||||
SASSERT(is_uninterp_const(e));
|
SASSERT(is_uninterp_const(e));
|
||||||
if (!m_vars.contains(e)) {
|
if (!m_vars.contains(e)) {
|
||||||
|
m_trail.push_back(e);
|
||||||
m_vars.insert(e, rec());
|
m_vars.insert(e, rec());
|
||||||
}
|
}
|
||||||
if (pos) {
|
if (pos) {
|
||||||
|
|
Loading…
Reference in a new issue