3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 11:55:51 +00:00

#5417 - revise q_eval based on bug based on non-chronological dependencies with post-hoc explain function

This commit is contained in:
Nikolaj Bjorner 2021-07-19 07:40:46 -07:00
parent e8bc9f3469
commit 7d915eb295
7 changed files with 99 additions and 145 deletions

View file

@ -57,7 +57,7 @@ namespace q {
unsigned m_index;
vector<lit> m_lits;
quantifier_ref m_q;
sat::literal m_literal;
sat::literal m_literal = sat::null_literal;
q::quantifier_stat* m_stat = nullptr;
binding* m_bindings = nullptr;
@ -75,10 +75,12 @@ namespace q {
struct justification {
expr* m_lhs, *m_rhs;
bool m_sign;
unsigned m_num_ev;
euf::enode_pair* m_evidence;
clause& m_clause;
euf::enode* const* m_binding;
justification(lit const& l, clause& c, euf::enode* const* b):
m_lhs(l.lhs), m_rhs(l.rhs), m_sign(l.sign), m_clause(c), m_binding(b) {}
justification(lit const& l, clause& c, euf::enode* const* b, unsigned n, euf::enode_pair* ev):
m_lhs(l.lhs), m_rhs(l.rhs), m_sign(l.sign), m_clause(c), m_binding(b), m_num_ev(n), m_evidence(ev) {}
sat::ext_constraint_idx to_index() const {
return sat::constraint_base::mem2base(this);
}