3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-07 15:55:46 +00:00

fixes to trim

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2023-07-03 19:26:12 +02:00
parent 30a2ced9aa
commit d9e7b8c21f
6 changed files with 123 additions and 34 deletions

View file

@ -63,6 +63,7 @@ class proof_trim {
vector<expr_ref_vector> m_clauses;
bool_vector m_is_infer;
symbol m_rup;
bool m_empty = false;
void mk_clause(expr_ref_vector const& clause) {
trim.init_clause();
@ -121,25 +122,32 @@ public:
*/
void infer(expr_ref_vector const& clause, app* hint) {
if (m_empty)
return;
if (hint && !is_rup(hint) && m_checker.check(hint)) {
auto clause1 = m_checker.clause(hint);
if (clause1.size() != clause.size()) {
mk_clause(clause1);
trim.assume(m_clauses.size());
clause1.push_back(hint);
trim.assume(m_clauses.size());
m_clauses.push_back(clause1);
m_is_infer.push_back(true);
mk_clause(clause);
trim.infer(m_clauses.size());
m_clauses.push_back(clause);
m_clauses.back().push_back(hint);
m_is_infer.push_back(true);
if (clause.empty())
m_is_infer.push_back(false);
if (clause.empty()) {
mk_clause(clause);
trim.infer(m_clauses.size());
m_clauses.push_back(clause);
m_clauses.back().push_back(hint);
m_is_infer.push_back(true);
m_empty = true;
do_trim(std::cout);
}
return;
}
}
mk_clause(clause);
if (is_rup(hint))
trim.infer(m_clauses.size());
@ -149,8 +157,10 @@ public:
if (hint)
m_clauses.back().push_back(hint);
m_is_infer.push_back(true);
if (clause.empty())
if (clause.empty()) {
m_empty = true;
do_trim(std::cout);
}
}
void updt_params(params_ref const& p) {