3
0
Fork 0
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:
Nikolaj Bjorner 2020-04-22 13:18:55 -07:00 committed by GitHub
parent 53c14bd554
commit 95a78b2450
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 1516 additions and 1654 deletions

View file

@ -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());