3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 09:35:32 +00:00

Add command to set initial value hints for solver in various components

This commit is contained in:
Nikolaj Bjorner 2024-09-18 17:48:03 +03:00
parent 1c163dbad2
commit a3f35b6830
17 changed files with 82 additions and 8 deletions

1
src/tactic/.#tactic.cpp Normal file
View file

@ -0,0 +1 @@
nbjorner@LAPTOP-04AEAFKH.32880:1726092166

View file

@ -375,6 +375,9 @@ private:
return m_assertions.get(idx);
}
}
void user_propagate_initialize_value(expr* var, expr* value) override {
}
};
solver * mk_bounded_int2bv_solver(ast_manager & m, params_ref const & p, solver* s) {

View file

@ -151,6 +151,7 @@ public:
throw tactic_exception("undecided");
skip_tactic::operator()(in, result);
}
void user_propagate_initialize_value(expr* var, expr* value) override { }
};
tactic * mk_fail_if_undecided_tactic() {

View file

@ -129,6 +129,7 @@ public:
tactic * translate(ast_manager & m) override { return this; }
char const* name() const override { return "skip"; }
void collect_statistics(statistics& st) const override {}
void user_propagate_initialize_value(expr* var, expr* value) override { }
};
tactic * mk_skip_tactic();

View file

@ -382,6 +382,12 @@ public:
}
tactic * translate(ast_manager & m) override { return translate_core<or_else_tactical>(m); }
void user_propagate_initialize_value(expr* var, expr* value) override {
for (auto t : m_ts)
t->user_propagate_initialize_value(var, value);
}
};
tactic * or_else(unsigned num, tactic * const * ts) {
@ -1163,6 +1169,11 @@ public:
tactic * new_t2 = m_t2->translate(m);
return alloc(cond_tactical, m_p.get(), new_t1, new_t2);
}
void user_propagate_initialize_value(expr* var, expr* value) override {
m_t1->user_propagate_initialize_value(var, value);
m_t2->user_propagate_initialize_value(var, value);
}
};
tactic * cond(probe * p, tactic * t1, tactic * t2) {