Perform theory widening eagerly (#4044)
authorAndres Noetzli <andres.noetzli@gmail.com>
Wed, 8 Apr 2020 21:38:09 +0000 (14:38 -0700)
committerGitHub <noreply@github.com>
Wed, 8 Apr 2020 21:38:09 +0000 (16:38 -0500)
commita48cafdd09c3ff8cb9984bad930343958c30ce56
tree6394a01dc7dbd296b4d1cc7cf3bbdd9cddfd68f7
parent24357fea07bf1eb6b1156a8e455c58faee96b604
Perform theory widening eagerly (#4044)

Fixes #3971 and fixes #3991. In incremental mode, the logic can change from one
(check-sat) call to another. In the reported issue, we start with QF_NIA
but then switch to QF_UFNIA because there is a div term (which has a UF in
its expanded form). Dealing with this issue is challenging in general. As a
result, we have decided not to allow theory widening in
Theory::expandDefinitions() anymore but instead to do it eagerly in
SmtEngine::setDefaults().
26 files changed:
src/smt/set_defaults.cpp
src/smt/smt_engine.cpp
src/theory/arith/theory_arith.cpp
src/theory/arith/theory_arith.h
src/theory/arith/theory_arith_private.cpp
src/theory/arith/theory_arith_private.h
src/theory/bv/theory_bv.cpp
src/theory/bv/theory_bv.h
src/theory/datatypes/theory_datatypes.cpp
src/theory/datatypes/theory_datatypes.h
src/theory/fp/theory_fp.cpp
src/theory/fp/theory_fp.h
src/theory/sets/theory_sets.cpp
src/theory/sets/theory_sets.h
src/theory/sets/theory_sets_private.cpp
src/theory/sets/theory_sets_private.h
src/theory/strings/theory_strings.cpp
src/theory/strings/theory_strings.h
src/theory/theory.h
src/theory/theory_engine.h
src/theory/theory_id.cpp
src/theory/uf/theory_uf.cpp
src/theory/uf/theory_uf.h
test/regress/CMakeLists.txt
test/regress/regress0/nl/issue3971.smt2 [new file with mode: 0644]
test/regress/regress0/nl/issue3991.smt2 [new file with mode: 0644]