mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
narrowing incorrect lemma generation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
3bf072557e
commit
4ffd860375
|
@ -426,6 +426,7 @@ namespace smt {
|
||||||
std::stringstream strm;
|
std::stringstream strm;
|
||||||
strm << "lemma_" << (++m_lemma_id) << ".smt2";
|
strm << "lemma_" << (++m_lemma_id) << ".smt2";
|
||||||
std::ofstream out(strm.str());
|
std::ofstream out(strm.str());
|
||||||
|
TRACE("lemma", tout << strm.str() << "\n";);
|
||||||
display_lemma_as_smt_problem(out, num_antecedents, antecedents, consequent, logic);
|
display_lemma_as_smt_problem(out, num_antecedents, antecedents, consequent, logic);
|
||||||
out.close();
|
out.close();
|
||||||
return m_lemma_id;
|
return m_lemma_id;
|
||||||
|
@ -466,6 +467,7 @@ namespace smt {
|
||||||
std::stringstream strm;
|
std::stringstream strm;
|
||||||
strm << "lemma_" << (++m_lemma_id) << ".smt2";
|
strm << "lemma_" << (++m_lemma_id) << ".smt2";
|
||||||
std::ofstream out(strm.str());
|
std::ofstream out(strm.str());
|
||||||
|
TRACE("lemma", tout << strm.str() << "\n";);
|
||||||
display_lemma_as_smt_problem(out, num_antecedents, antecedents, num_eq_antecedents, eq_antecedents, consequent, logic);
|
display_lemma_as_smt_problem(out, num_antecedents, antecedents, num_eq_antecedents, eq_antecedents, consequent, logic);
|
||||||
out.close();
|
out.close();
|
||||||
return m_lemma_id;
|
return m_lemma_id;
|
||||||
|
|
|
@ -1512,7 +1512,7 @@ public:
|
||||||
if (r1.is_int() && r2.is_int() && r == div(r1, r2)) {
|
if (r1.is_int() && r2.is_int() && r == div(r1, r2)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (r2.is_neg()) {
|
if (r2.is_neg() || r1.is_neg()) {
|
||||||
// TBD
|
// TBD
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,13 +217,12 @@ struct mus::imp {
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_set mss_set;
|
expr_set mss_set;
|
||||||
for (unsigned i = 0; i < mss.size(); ++i) {
|
for (expr* e : mss) {
|
||||||
mss_set.insert(mss[i]);
|
mss_set.insert(e);
|
||||||
}
|
}
|
||||||
expr_set::iterator it = min_core.begin(), end = min_core.end();
|
for (expr * e : min_core) {
|
||||||
for (; it != end; ++it) {
|
if (mss_set.contains(e) && min_lit != e) {
|
||||||
if (mss_set.contains(*it) && min_lit != *it) {
|
unknown.push_back(e);
|
||||||
unknown.push_back(*it);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
core_literal = min_lit;
|
core_literal = min_lit;
|
||||||
|
|
Loading…
Reference in a new issue