3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-21 05:13:39 +00:00

fix bugs in flatten_clauses simplifier, switch proof/fml

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2023-01-04 11:56:28 -08:00
parent d4490738bc
commit 6f95c77023
4 changed files with 9 additions and 8 deletions

View file

@ -32,6 +32,7 @@ public:
m_fml(fml), m_fml(fml),
m_proof(p), m_proof(p),
m_dep(d) { m_dep(d) {
SASSERT(fml);
m.inc_ref(fml); m.inc_ref(fml);
m.inc_ref(d); m.inc_ref(d);
m.inc_ref(p); m.inc_ref(p);

View file

@ -67,8 +67,8 @@ public:
decomposed = true; decomposed = true;
if (decomposed) { if (decomposed) {
for (expr* arg : *to_app(b)) for (expr* arg : *to_app(b))
m_fmls.add(dependent_expr(m, nullptr, m.mk_or(a, mk_not(m, arg)), de.dep())); m_fmls.add(dependent_expr(m, m.mk_or(a, mk_not(m, arg)), nullptr, de.dep()));
m_fmls.update(idx, dependent_expr(m, nullptr, m.mk_true(), nullptr)); m_fmls.update(idx, dependent_expr(m, m.mk_true(), nullptr, nullptr));
++m_num_flat; ++m_num_flat;
continue; continue;
} }
@ -79,8 +79,8 @@ public:
decomposed = true; decomposed = true;
if (decomposed) { if (decomposed) {
for (expr * arg : *to_app(b)) for (expr * arg : *to_app(b))
m_fmls.add(dependent_expr(m, nullptr, m.mk_or(a, arg), de.dep())); m_fmls.add(dependent_expr(m, m.mk_or(a, arg), nullptr, de.dep()));
m_fmls.update(idx, dependent_expr(m, nullptr, m.mk_true(), nullptr)); m_fmls.update(idx, dependent_expr(m, m.mk_true(), nullptr, nullptr));
++m_num_flat; ++m_num_flat;
continue; continue;
} }

View file

@ -56,7 +56,7 @@ class sat_smt_solver : public solver {
~dep_expr_state() override {} ~dep_expr_state() override {}
virtual unsigned qtail() const override { return s.m_fmls.size(); } virtual unsigned qtail() const override { return s.m_fmls.size(); }
dependent_expr const& operator[](unsigned i) override { return s.m_fmls[i]; } dependent_expr const& operator[](unsigned i) override { return s.m_fmls[i]; }
void update(unsigned i, dependent_expr const& j) override { s.m_fmls[i] = j; } void update(unsigned i, dependent_expr const& j) override { SASSERT(j.fml()); s.m_fmls[i] = j; }
void add(dependent_expr const& j) override { s.m_fmls.push_back(j); } void add(dependent_expr const& j) override { s.m_fmls.push_back(j); }
bool inconsistent() override { return s.m_solver.inconsistent(); } bool inconsistent() override { return s.m_solver.inconsistent(); }
model_reconstruction_trail& model_trail() override { return m_reconstruction_trail; } model_reconstruction_trail& model_trail() override { return m_reconstruction_trail; }

View file

@ -48,7 +48,7 @@ public:
dependent_expr_state(m), dependent_expr_state(m),
m(m), m(m),
m_params(p), m_params(p),
m_dep(m, nullptr, nullptr, nullptr), m_dep(m, m.mk_true(), nullptr, nullptr),
m_factory(f) m_factory(f)
{} {}
@ -129,7 +129,7 @@ public:
m_simp = nullptr; m_simp = nullptr;
m_model_trail = nullptr; m_model_trail = nullptr;
m_goal = nullptr; m_goal = nullptr;
m_dep = dependent_expr(m, nullptr, nullptr, nullptr); m_dep = dependent_expr(m, m.mk_true(), nullptr, nullptr);
} }
void collect_statistics(statistics & st) const override { void collect_statistics(statistics & st) const override {