mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
updates to seq and bug fixes (#4056)
* na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4037 * nicer output for skolem functions * more overhaul of seq, some bug fixes * na * added offset_eq file * na * fix #4044 * fix #4040 * fix #4045 * updated ignore * new rewrites for indexof based on #4036 * add shortcuts * updated ne solver for seq, fix #4025 * use pair vectors for equalities that are reduced by seq_rewriter * use erase_and_swap * remove unit-walk * na * add check for #3200 * nits Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * name a type Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove fp check Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove unsound axiom instantiation for non-contains Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix rewrites Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4053 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4052 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
53c14bd554
commit
95a78b2450
39 changed files with 1516 additions and 1654 deletions
|
@ -30,8 +30,6 @@ class bvarray2uf_tactic : public tactic {
|
|||
|
||||
struct imp {
|
||||
ast_manager & m_manager;
|
||||
bool m_produce_models;
|
||||
bool m_produce_proofs;
|
||||
bool m_produce_cores;
|
||||
bvarray2uf_rewriter m_rw;
|
||||
|
||||
|
@ -39,8 +37,6 @@ class bvarray2uf_tactic : public tactic {
|
|||
|
||||
imp(ast_manager & m, params_ref const & p) :
|
||||
m_manager(m),
|
||||
m_produce_models(false),
|
||||
m_produce_proofs(false),
|
||||
m_produce_cores(false),
|
||||
m_rw(m, p) {
|
||||
updt_params(p);
|
||||
|
@ -59,10 +55,11 @@ class bvarray2uf_tactic : public tactic {
|
|||
result.reset();
|
||||
fail_if_unsat_core_generation("bvarray2uf", g);
|
||||
|
||||
m_produce_models = g->models_enabled();
|
||||
bool produce_models = g->models_enabled();
|
||||
bool produce_proofs = g->proofs_enabled();
|
||||
model_converter_ref mc;
|
||||
|
||||
if (m_produce_models) {
|
||||
if (produce_models) {
|
||||
generic_model_converter * fmc = alloc(generic_model_converter, m_manager, "bvarray2uf");
|
||||
mc = fmc;
|
||||
m_rw.set_mcs(fmc);
|
||||
|
@ -76,17 +73,17 @@ class bvarray2uf_tactic : public tactic {
|
|||
for (unsigned idx = 0; idx < size; idx++) {
|
||||
if (g->inconsistent())
|
||||
break;
|
||||
expr * curr = g->form(idx);
|
||||
expr* curr = g->form(idx);
|
||||
m_rw(curr, new_curr, new_pr);
|
||||
if (m_produce_proofs) {
|
||||
if (produce_proofs) {
|
||||
proof * pr = g->pr(idx);
|
||||
new_pr = m_manager.mk_modus_ponens(pr, new_pr);
|
||||
}
|
||||
g->update(idx, new_curr, new_pr, g->dep(idx));
|
||||
}
|
||||
|
||||
for (unsigned i = 0; i < m_rw.m_cfg.extra_assertions.size(); i++)
|
||||
g->assert_expr(m_rw.m_cfg.extra_assertions[i].get());
|
||||
for (expr* a : m_rw.m_cfg.extra_assertions)
|
||||
g->assert_expr(a);
|
||||
|
||||
g->inc_depth();
|
||||
g->add(mc.get());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue