3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-26 13:06:05 +00:00

add sequential option for SLS, fixes to import/export methods SLS<->SMT

This commit is contained in:
Nikolaj Bjorner 2024-11-14 21:43:26 -08:00
parent 6a9d5910cb
commit 8e3b9f6686
16 changed files with 224 additions and 63 deletions

View file

@ -54,9 +54,30 @@ namespace smt {
sls::smt_plugin* m_smt_plugin = nullptr;
unsigned m_trail_lim = 0;
bool m_checking = false;
bool m_parallel_mode = true;
unsigned m_threshold = 1;
unsigned m_restart_sls_count = 0;
unsigned m_difference_score = 0;
unsigned m_difference_score_threshold = 0;
unsigned m_num_guided_sls = 0;
unsigned m_restart_ls_steps = 100000;
unsigned m_restart_ls_steps_inc = 10000;
unsigned m_restart_ls_steps_max = 300000;
unsigned m_final_check_ls_steps = 30000;
unsigned m_final_check_ls_steps_dec = 10000;
unsigned m_final_check_ls_steps_min = 10000;
::statistics m_st;
void finalize();
void bounded_run(unsigned num_steps);
void inc_restart_ls_steps() {
if (m_restart_ls_steps < m_restart_ls_steps_max)
m_restart_ls_steps += m_restart_ls_steps_inc;
}
void dec_final_check_ls_steps() {
if (m_final_check_ls_steps > m_final_check_ls_steps_min)
m_final_check_ls_steps -= m_final_check_ls_steps_dec;
}
public:
theory_sls(context& ctx);
@ -75,17 +96,22 @@ namespace smt {
bool internalize_term(app* term) override { return false; }
void new_eq_eh(theory_var v1, theory_var v2) override {}
void new_diseq_eh(theory_var v1, theory_var v2) override {}
void restart_eh() override;
final_check_status final_check_eh() override;
// sls::smt_context interface
ast_manager& get_manager() override { return m; }
params_ref get_params() override;
void initialize_value(expr* t, expr* v) override;
void set_value(expr* t, expr* v) override;
void force_phase(sat::literal lit) override;
void set_has_new_best_phase(bool b) override;
bool get_best_phase(sat::bool_var v) override;
expr* bool_var2expr(sat::bool_var v) override;
void set_finished() override;
unsigned get_num_bool_vars() const override;
void inc_activity(sat::bool_var v, double inc) override;
bool parallel_mode() const { return m_parallel_mode; }
bool get_value(expr* v, expr_ref& value) override;
};
}