Fixes to theoryof-mode; no longer static in Theory class.
authorMorgan Deters <mdeters@cs.nyu.edu>
Tue, 17 Sep 2013 21:21:26 +0000 (17:21 -0400)
committerMorgan Deters <mdeters@cs.nyu.edu>
Wed, 18 Sep 2013 20:39:42 +0000 (16:39 -0400)
src/smt/smt_engine.cpp
src/theory/options
src/theory/theory.cpp
src/theory/theory.h
src/theory/theoryof_mode.h

index 6e09408d9b03bdf18fbfd8b2de38f85ca6c75416..b2a0ba771864b0f6b5651f0c474534ce1a6886e7 100644 (file)
@@ -835,12 +835,9 @@ void SmtEngine::setLogicInternal() throw() {
   // Set the options for the theoryOf
   if(!options::theoryOfMode.wasSetByUser()) {
     if(d_logic.isSharingEnabled() && !d_logic.isTheoryEnabled(THEORY_BV)) {
-      Theory::setTheoryOfMode(THEORY_OF_TERM_BASED);
-    } else {
-      Theory::setTheoryOfMode(THEORY_OF_TYPE_BASED);
+      Trace("smt") << "setting theoryof-mode to term-based" << endl;
+      options::theoryOfMode.set(THEORY_OF_TERM_BASED);
     }
-  } else {
-    Theory::setTheoryOfMode(options::theoryOfMode());
   }
 
   // by default, symmetry breaker is on only for QF_UF
index 5d752fca1dbe1f07bf94206483149b2294160292..9944264c8594bd1548ea4b8a49d36d4df2a783a6 100644 (file)
@@ -5,8 +5,8 @@
 
 module THEORY "theory/options.h" Theory layer
 
-expert-option theoryOfMode --theoryof-mode=MODE CVC4::theory::TheoryOfMode :handler CVC4::theory::stringToTheoryOfMode :handler-include "theory/options_handlers.h" :default CVC4::theory::THEORY_OF_TYPE_BASED :include "theory/theoryof_mode.h"
- mode for theoryof
+expert-option theoryOfMode theoryof-mode --theoryof-mode=MODE CVC4::theory::TheoryOfMode :handler CVC4::theory::stringToTheoryOfMode :handler-include "theory/options_handlers.h" :default CVC4::theory::THEORY_OF_TYPE_BASED :include "theory/theoryof_mode.h" :read-write
+ mode for Theory::theoryof()
 
 option - use-theory --use-theory=NAME argument :handler CVC4::theory::useTheory :handler-include "theory/options_handlers.h"
  use alternate theory implementation NAME (--use-theory=help for a list)
index 3e30645e83aa8a0581a99da126748c34fb23c84a..a1a83517036041d21f5d1d541aabaef0294d6be6 100644 (file)
@@ -28,9 +28,6 @@ namespace theory {
 /** Default value for the uninterpreted sorts is the UF theory */
 TheoryId Theory::s_uninterpretedSortOwner = THEORY_UF;
 
-/** By default, we use the type based theoryOf */
-TheoryOfMode Theory::s_theoryOfMode = THEORY_OF_TYPE_BASED;
-
 std::ostream& operator<<(std::ostream& os, Theory::Effort level){
   switch(level){
   case Theory::EFFORT_STANDARD:
index 6b1974bb805439d94b83b6383cacfafc0f0fd11a..d1734674d045902a44b1a68dbaef307e37864e44 100644 (file)
@@ -26,6 +26,7 @@
 #include "theory/substitutions.h"
 #include "theory/output_channel.h"
 #include "theory/logic_info.h"
+#include "theory/options.h"
 #include "theory/theoryof_mode.h"
 #include "context/context.h"
 #include "context/cdlist.h"
@@ -298,9 +299,6 @@ protected:
   void printFacts(std::ostream& os) const;
   void debugPrintFacts() const;
 
-  /** Mode of the theoryOf operation */
-  static TheoryOfMode s_theoryOfMode;
-
 public:
 
   /**
@@ -333,12 +331,7 @@ public:
    * Returns the ID of the theory responsible for the given node.
    */
   static inline TheoryId theoryOf(TNode node) {
-    return theoryOf(s_theoryOfMode, node);
-  }
-
-  /** Set the theoryOf mode */
-  static void setTheoryOfMode(TheoryOfMode mode) {
-    s_theoryOfMode = mode;
+    return theoryOf(options::theoryOfMode(), node);
   }
 
   /**
@@ -349,7 +342,7 @@ public:
   }
 
   /**
-   * Set the owner of the uninterpreted sort.
+   * Get the owner of the uninterpreted sort.
    */
   static TheoryId getUninterpretedSortOwner() {
     return s_uninterpretedSortOwner;
index cd8c68b1a1c82719f45a654146a3a87545e98fa8..c5096025791a91e75f224d52fa3027df5facb24f 100644 (file)
  ** Option selection for theoryOf() operation.
  **/
 
-#pragma once
-
 #include "cvc4_public.h"
 
+#pragma once
+
 namespace CVC4 {
 namespace theory {
 
@@ -29,6 +29,18 @@ enum TheoryOfMode {
   THEORY_OF_TERM_BASED
 };/* enum TheoryOfMode */
 
+inline std::ostream& operator<<(std::ostream& out, TheoryOfMode m) throw() CVC4_PUBLIC;
+
+inline std::ostream& operator<<(std::ostream& out, TheoryOfMode m) throw() {
+  switch(m) {
+  case THEORY_OF_TYPE_BASED: return out << "THEORY_OF_TYPE_BASED";
+  case THEORY_OF_TERM_BASED: return out << "THEORY_OF_TERM_BASED";
+  default: return out << "TheoryOfMode!UNKNOWN";
+  }
+
+  Unreachable();
+}
+
 }/* CVC4::theory namespace */
 }/* CVC4 namespace */