3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-01 04:45:52 +00:00

fix missing equality propagation in new bv solver

This commit is contained in:
Nikolaj Bjorner 2020-11-16 16:22:56 -08:00
parent 36e40a296f
commit f6f594e21d
5 changed files with 35 additions and 13 deletions

View file

@ -175,6 +175,7 @@ namespace bv {
atom* m_atom{ nullptr };
explicit propagation_item(atom* a) : m_atom(a) {}
explicit propagation_item(var_pos const& vp) : m_vp(vp) {}
bool operator==(propagation_item const& other) const { if (m_atom) return m_atom == other.m_atom; return false; }
};
@ -300,6 +301,8 @@ namespace bv {
bool check_zero_one_bits(theory_var v);
void check_missing_propagation() const;
void validate_atoms() const;
std::ostream& display(std::ostream& out, atom const& a) const;
public:
solver(euf::solver& ctx, theory_id id);
@ -332,6 +335,7 @@ namespace bv {
void init_use_list(sat::ext_use_list& ul) override;
bool is_blocked(literal l, sat::ext_constraint_idx) override;
bool check_model(sat::model const& m) const override;
void finalize_model(model& mdl) override;
unsigned max_var(unsigned w) const override;
void new_eq_eh(euf::th_eq const& eq) override;