Skip to content

Commit 29e1fb6

Browse files
fix #2720, unsound preprocessing in elim_uncnstr_tactic where datatype properties of eliminated subterms is forgotten
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 05ad90c commit 29e1fb6

File tree

1 file changed

+1
-26
lines changed

1 file changed

+1
-26
lines changed

src/tactic/core/elim_uncnstr_tactic.cpp

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -675,18 +675,7 @@ class elim_uncnstr_tactic : public tactic {
675675
}
676676

677677
app * process_datatype_app(func_decl * f, unsigned num, expr * const * args) {
678-
if (m_dt_util.is_recognizer(f)) {
679-
SASSERT(num == 1);
680-
if (uncnstr(args[0])) {
681-
if (!m_mc) {
682-
app * r;
683-
mk_fresh_uncnstr_var_for(f, num, args, r);
684-
return r;
685-
}
686-
// TODO: handle model generation
687-
}
688-
}
689-
else if (m_dt_util.is_accessor(f)) {
678+
if (m_dt_util.is_accessor(f)) {
690679
SASSERT(num == 1);
691680
if (uncnstr(args[0])) {
692681
if (!m_mc) {
@@ -713,20 +702,6 @@ class elim_uncnstr_tactic : public tactic {
713702
return u;
714703
}
715704
}
716-
else if (m_dt_util.is_constructor(f)) {
717-
if (uncnstr(num, args)) {
718-
app * u;
719-
if (!mk_fresh_uncnstr_var_for(f, num, args, u))
720-
return u;
721-
if (!m_mc)
722-
return u;
723-
ptr_vector<func_decl> const & accs = *m_dt_util.get_constructor_accessors(f);
724-
for (unsigned i = 0; i < num; i++) {
725-
add_def(args[i], m().mk_app(accs[i], u));
726-
}
727-
return u;
728-
}
729-
}
730705
return nullptr;
731706
}
732707

0 commit comments

Comments
 (0)