summaryrefslogtreecommitdiff
path: root/src/smt/smt_engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/smt/smt_engine.cpp')
-rw-r--r--src/smt/smt_engine.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index a55ced622..2bdf7b71f 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -456,6 +456,17 @@ void SmtEngine::setLogicInternal() throw(AssertionException) {
d_logic.lock();
+ // Set the options for the theoryOf
+ if(!Options::current()->theoryOfModeSetByUser) {
+ if(d_logic.isSharingEnabled() && !d_logic.isTheoryEnabled(THEORY_BV) && !d_logic.isQuantified()) {
+ Theory::setTheoryOfMode(theory::THEORY_OF_TERM_BASED);
+ } else {
+ Theory::setTheoryOfMode(theory::THEORY_OF_TYPE_BASED);
+ }
+ } else {
+ Theory::setTheoryOfMode(Options::current()->theoryOfMode);
+ }
+
// by default, symmetry breaker is on only for QF_UF
if(! Options::current()->ufSymmetryBreakerSetByUser) {
bool qf_uf = d_logic.isPure(THEORY_UF) && !d_logic.isQuantified();
@@ -471,7 +482,7 @@ void SmtEngine::setLogicInternal() throw(AssertionException) {
}
// If in arrays, set the UF handler to arrays
- if(d_logic.isPure(THEORY_ARRAY) && !d_logic.isQuantified()) {
+ if(d_logic.isTheoryEnabled(THEORY_ARRAY) && !d_logic.isQuantified()) {
Theory::setUninterpretedSortOwner(THEORY_ARRAY);
} else {
Theory::setUninterpretedSortOwner(THEORY_UF);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback