3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-29 07:27:57 +00:00

add option to selectively disable variable solving for only ground expressions

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2025-07-25 19:15:20 -07:00
parent 1a488bb67a
commit e54928679f
3 changed files with 10 additions and 1 deletions

View file

@ -120,6 +120,9 @@ namespace euf {
if (m_fmls.frozen(v))
continue;
if (!m_config.m_enable_non_ground && has_quantifiers(t))
continue;
bool is_safe = true;
unsigned todo_sz = todo.size();
@ -127,7 +130,10 @@ namespace euf {
// all time-stamps must be at or above current level
// unexplored variables that are part of substitution are appended to work list.
SASSERT(m_todo.empty());
m_todo.push_back(t);
verbose_stream() << "check " << mk_pp(t, m) << "\n";
expr_fast_mark1 visited;
while (!m_todo.empty()) {
expr* e = m_todo.back();
@ -336,6 +342,7 @@ namespace euf {
m_rewriter.updt_params(p);
smt_params_helper sp(p);
m_config.m_enabled = sp.solve_eqs();
m_config.m_enable_non_ground = sp.solve_eqs_non_ground();
}
void solve_eqs::collect_param_descrs(param_descrs& r) {

View file

@ -42,6 +42,7 @@ namespace euf {
bool m_context_solve = true;
unsigned m_max_occs = UINT_MAX;
bool m_enabled = true;
bool m_enable_non_ground = true;
};
stats m_stats;

View file

@ -20,6 +20,7 @@ def_module_params(module_name='smt',
('delay_units_threshold', UINT, 32, 'maximum number of learned unit clauses before restarting, ignored if delay_units is false'),
('elim_unconstrained', BOOL, True, 'pre-processing: eliminate unconstrained subterms'),
('solve_eqs', BOOL, True, 'pre-processing: solve equalities'),
('solve_eqs.non_ground', BOOL, True, 'pre-processing: solve equalities. Allow eliminating variables by non-ground solutions which can break behavior for model evaluation.'),
('propagate_values', BOOL, True, 'pre-processing: propagate values'),
('bound_simplifier', BOOL, True, 'apply bounds simplification during pre-processing'),
('pull_nested_quantifiers', BOOL, False, 'pre-processing: pull nested quantifiers'),