3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-27 08:28:44 +00:00

add dependency tracking to proof from trim

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2023-07-04 16:24:09 +02:00
parent abf5aff0b3
commit f0d3cbe39d
3 changed files with 38 additions and 17 deletions

View file

@ -35,7 +35,8 @@ namespace sat {
uint_set m_in_coi;
clause* m_conflict_clause = nullptr;
vector<std::tuple<unsigned, literal_vector, clause*, bool, bool>> m_trail;
vector<std::pair<unsigned, unsigned_vector>> m_result;
struct hash {
unsigned operator()(literal_vector const& v) const {
return string_hash((char const*)v.begin(), v.size()*sizeof(literal), 3);
@ -47,6 +48,7 @@ namespace sat {
}
};
map<literal_vector, clause_vector, hash, eq> m_clauses;
map<literal_vector, unsigned, hash, eq> m_clause2id;
hashtable<literal_vector, hash, eq> m_core_literals;
bool_vector m_propagated;
@ -60,7 +62,7 @@ namespace sat {
void add_dependency(justification j);
void add_core(bool_var v);
void add_core(literal l, justification j);
bool in_core(literal_vector const& cl, clause* cp) const;
bool in_core(literal_vector const& cl) const;
void revive(literal_vector const& cl, clause* cp);
clause* del(literal_vector const& cl);
void save(literal_vector const& lits, clause* cl);
@ -83,7 +85,7 @@ namespace sat {
void infer(unsigned id);
void updt_params(params_ref const& p) { s.updt_params(p); }
unsigned_vector trim();
vector<std::pair<unsigned, unsigned_vector>> trim();
};
}