mirror of
https://github.com/Z3Prover/z3
synced 2025-08-23 11:37:54 +00:00
delay (lazy) process equalities.
This commit is contained in:
parent
ddbcd08d46
commit
156139622c
3 changed files with 49 additions and 20 deletions
|
@ -164,6 +164,7 @@ namespace arith {
|
|||
svector<literal> m_inequalities; // asserted rows corresponding to inequality literals.
|
||||
svector<euf::enode_pair> m_equalities; // asserted rows corresponding to equalities.
|
||||
svector<theory_var> m_definitions; // asserted rows corresponding to definitions
|
||||
svector<std::pair<euf::th_eq, bool>> m_delayed_eqs;
|
||||
|
||||
literal_vector m_asserted;
|
||||
expr* m_not_handled{ nullptr };
|
||||
|
@ -305,6 +306,7 @@ namespace arith {
|
|||
literal is_bound_implied(lp::lconstraint_kind k, rational const& value, api_bound const& b) const;
|
||||
void assert_bound(bool is_true, api_bound& b);
|
||||
void mk_eq_axiom(bool is_eq, euf::th_eq const& eq);
|
||||
void mk_diseq_axiom(euf::th_eq const& eq);
|
||||
void assert_idiv_mod_axioms(theory_var u, theory_var v, theory_var w, rational const& r);
|
||||
api_bound* mk_var_bound(sat::literal lit, theory_var v, lp_api::bound_kind bk, rational const& bound);
|
||||
lp::lconstraint_kind bound2constraint_kind(bool is_int, lp_api::bound_kind bk, bool is_true);
|
||||
|
@ -348,6 +350,7 @@ namespace arith {
|
|||
bool use_nra_model();
|
||||
|
||||
lbool make_feasible();
|
||||
bool check_delayed_eqs();
|
||||
lbool check_lia();
|
||||
lbool check_nla();
|
||||
bool is_infeasible() const;
|
||||
|
@ -423,8 +426,8 @@ namespace arith {
|
|||
void collect_statistics(statistics& st) const override;
|
||||
euf::th_solver* clone(euf::solver& ctx) override;
|
||||
bool use_diseqs() const override { return true; }
|
||||
void new_eq_eh(euf::th_eq const& eq) override { mk_eq_axiom(true, eq); }
|
||||
void new_diseq_eh(euf::th_eq const& de) override { mk_eq_axiom(false, de); }
|
||||
void new_eq_eh(euf::th_eq const& eq) override;
|
||||
void new_diseq_eh(euf::th_eq const& de) override;
|
||||
bool unit_propagate() override;
|
||||
void init_model() override;
|
||||
void finalize_model(model& mdl) override { DEBUG_CODE(dbg_finalize_model(mdl);); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue