3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-31 03:32:28 +00:00

Merge branch 'master' into polysat

This commit is contained in:
Jakob Rath 2022-08-01 11:27:49 +02:00
commit 220a63e8bd
223 changed files with 508 additions and 505 deletions

View file

@ -351,7 +351,6 @@ namespace bv {
public:
solver(euf::solver& ctx, theory_id id);
~solver() override {}
void set_lookahead(sat::lookahead* s) override { }
void init_search() override {}
double get_reward(literal l, sat::ext_constraint_idx idx, sat::literal_occs_fun& occs) const override;

View file

@ -1823,7 +1823,7 @@ namespace pb {
}
bool solver::validate_watch(pbc const& p, literal alit) const {
if (value(p.lit()) != l_true)
if (p.lit() == sat::null_literal || value(p.lit()) != l_true)
return true;
for (unsigned i = 0; i < p.size(); ++i) {
literal l = p[i].second;

View file

@ -3744,9 +3744,6 @@ namespace q {
reset_pp_pc();
}
~mam_impl() override {
}
void add_pattern(quantifier * qa, app * mp) override {
SASSERT(m.is_pattern(mp));
TRACE("trigger_bug", tout << "adding pattern\n" << mk_ismt2_pp(qa, m) << "\n" << mk_ismt2_pp(mp, m) << "\n";);

View file

@ -45,7 +45,6 @@ namespace q {
arith_util a;
public:
arith_projection(ast_manager& m) : projection_function(m), a(m) {}
~arith_projection() override {}
bool operator()(expr* e1, expr* e2) const override { return lt(a, e1, e2); }
expr* mk_lt(expr* x, expr* y) override { return a.mk_lt(x, y); }
};
@ -54,7 +53,6 @@ namespace q {
bv_util bvu;
public:
ubv_projection(ast_manager& m) : projection_function(m), bvu(m) {}
~ubv_projection() override {}
bool operator()(expr* e1, expr* e2) const override { return lt(bvu, e1, e2); }
expr* mk_lt(expr* x, expr* y) override { return m.mk_not(bvu.mk_ule(y, x)); }
};

View file

@ -95,7 +95,6 @@ namespace q {
public:
model_fixer(euf::solver& ctx, solver& qs);
~model_fixer() override {}
/**
* Update model in order to best satisfy quantifiers.

View file

@ -65,7 +65,6 @@ namespace q {
public:
solver(euf::solver& ctx, family_id fid);
~solver() override {}
bool is_external(sat::bool_var v) override { return false; }
void get_antecedents(sat::literal l, sat::ext_justification_idx idx, sat::literal_vector& r, bool probing) override;
void asserted(sat::literal l) override;

View file

@ -189,7 +189,6 @@ namespace euf {
public:
th_euf_solver(euf::solver& ctx, symbol const& name, euf::theory_id id);
virtual ~th_euf_solver() {}
virtual theory_var mk_var(enode* n);
unsigned get_num_vars() const { return m_var2enode.size(); }
euf::enode* e_internalize(expr* e);

View file

@ -131,6 +131,21 @@ namespace user_solver {
m_id2justification.setx(v, lits, sat::literal_vector());
m_fixed_eh(m_user_context, this, var2expr(v), lit.sign() ? m.mk_false() : m.mk_true());
}
void solver::new_eq_eh(euf::th_eq const& eq) {
if (!m_eq_eh)
return;
force_push();
m_eq_eh(m_user_context, this, var2expr(eq.v1()), var2expr(eq.v2()));
}
void solver::new_diseq_eh(euf::th_eq const& de) {
if (!m_diseq_eh)
return;
force_push();
m_diseq_eh(m_user_context, this, var2expr(de.v1()), var2expr(de.v2()));
}
void solver::push_core() {
th_euf_solver::push_core();

View file

@ -144,6 +144,10 @@ namespace user_solver {
bool get_case_split(sat::bool_var& var, lbool &phase) override;
void asserted(sat::literal lit) override;
bool use_diseqs() const override { return (bool)m_diseq_eh; }
void new_eq_eh(euf::th_eq const& eq) override;
void new_diseq_eh(euf::th_eq const& de) override;
sat::check_result check() override;
void push_core() override;
void pop_core(unsigned n) override;