disable Logic-checking with finite model finding for now, since FMF uses Rationals...
authorMorgan Deters <mdeters@cs.nyu.edu>
Fri, 10 May 2013 21:08:23 +0000 (17:08 -0400)
committerMorgan Deters <mdeters@cs.nyu.edu>
Mon, 20 May 2013 20:51:05 +0000 (16:51 -0400)
src/theory/theory_engine.cpp

index 5ee8e5fdae78e2660033d8eb7842b611577beff3..ee37f331ee9d60b865772e704e62c5b56b9ad1a0 100644 (file)
@@ -192,18 +192,23 @@ void TheoryEngine::preRegister(TNode preprocessed) {
       // Remove the top theory, if any more that means multiple theories were involved
       bool multipleTheories = Theory::setRemove(Theory::theoryOf(preprocessed), theories);
       TheoryId i;
-      while((i = Theory::setPop(theories)) != THEORY_LAST) {
-        if(!d_logicInfo.isTheoryEnabled(i)) {
-          LogicInfo newLogicInfo = d_logicInfo.getUnlockedCopy();
-          newLogicInfo.enableTheory(i);
-          newLogicInfo.lock();
-          stringstream ss;
-          ss << "The logic was specified as " << d_logicInfo.getLogicString()
-             << ", which doesn't include " << i
-             << ", but found a term in that theory." << endl
-             << "You might want to extend your logic to " << newLogicInfo
-             << endl;
-          throw LogicException(ss.str());
+      // These checks don't work with finite model finding, because it
+      // uses Rational constants to represent cardinality constraints,
+      // even though arithmetic isn't actually involved.
+      if(!options::finiteModelFind()) {
+        while((i = Theory::setPop(theories)) != THEORY_LAST) {
+          if(!d_logicInfo.isTheoryEnabled(i)) {
+            LogicInfo newLogicInfo = d_logicInfo.getUnlockedCopy();
+            newLogicInfo.enableTheory(i);
+            newLogicInfo.lock();
+            stringstream ss;
+            ss << "The logic was specified as " << d_logicInfo.getLogicString()
+               << ", which doesn't include " << i
+               << ", but found a term in that theory." << endl
+               << "You might want to extend your logic to "
+               << newLogicInfo.getLogicString() << endl;
+            throw LogicException(ss.str());
+          }
         }
       }
       if (multipleTheories) {