Partially reverting the changes made in 4308. There is now both an Expr and Node...
authorTim King <taking@cs.nyu.edu>
Tue, 11 Sep 2012 00:20:51 +0000 (00:20 +0000)
committerTim King <taking@cs.nyu.edu>
Tue, 11 Sep 2012 00:20:51 +0000 (00:20 +0000)
src/printer/cvc/cvc_printer.cpp
src/printer/smt2/smt2_printer.cpp
src/smt/smt_engine.cpp
src/theory/model.cpp
src/theory/model.h

index 9e61fb8df9cdd315481068f7dacf9fb337719a67..5803ad23fde56c8f5bd2db77aae1de0b462a756e 100644 (file)
@@ -777,7 +777,7 @@ void CvcPrinter::toStream(std::ostream& out, Model* m, Command* c, int c_type )
       }
       out << "): ";
     }
-    out << Node::fromExpr( tm->getValue( n.toExpr() ) );
+    out << tm->getValue( n );
     out << ";" << std::endl;
 
 /*
index 6c6d2a57627c799c73feda4fddb9152043ab79eb..9400b77328d66731783d6a316c4463321fd6ae7e 100644 (file)
@@ -558,7 +558,7 @@ void Smt2Printer::toStream(std::ostream& out, Model* m, Command* c, int c_type )
       out << ") " << tn;
     }
     out << " ";
-    out << Node::fromExpr( tm->getValue( n.toExpr() ) );
+    out << tm->getValue( n );
     out << ")" << std::endl;
 
 /*
index 6e6ee365af610c9f898b82098c14e96446e43193..b9732c32ebe48d38c766993798a3fdda9b941781 100644 (file)
@@ -1768,7 +1768,7 @@ Expr SmtEngine::getValue(const Expr& e)
   theory::TheoryModel* m = d_theoryEngine->getModel();
   Node resultNode;
   if( m ){
-    resultNode = Node::fromExpr( m->getValue( n.toExpr() ) );
+    resultNode = m->getValue( n );
   }
   Trace("smt") << "--- got value " << n << " = " << resultNode << endl;
   // type-check the result we got
@@ -1846,7 +1846,7 @@ CVC4::SExpr SmtEngine::getAssignment() throw(ModalException, AssertionException)
     theory::TheoryModel* m = d_theoryEngine->getModel();
     Node resultNode;
     if( m ){
-      resultNode = Node::fromExpr( m->getValue( n.toExpr() ) );
+      resultNode = m->getValue( n );
     }
 
     // type-check the result we got
index 67640c3098e80b356ca0d0cd64e9fa1482bf1a50..dc0ae787701bdd113b89c546025856a46201c272 100644 (file)
@@ -46,12 +46,16 @@ void TheoryModel::reset(){
   d_rep_set.clear();
 }
 
-Expr TheoryModel::getValue( const Expr& expr ){
-  Node n = Node::fromExpr( expr );
+Node TheoryModel::getValue( TNode n ){
   //apply substitutions
   Node nn = d_substitutions.apply( n );
   //get value in model
-  Node ret = getModelValue( nn );
+  return getModelValue( nn );
+}
+
+Expr TheoryModel::getValue( const Expr& expr ){
+  Node n = Node::fromExpr( expr );
+  Node ret = getValue( n );
   return ret.toExpr();
 }
 
@@ -553,4 +557,4 @@ Node TheoryEngineModelBuilder::normalizeNode( TheoryModel* m, Node r, std::map<
   }else{
     return r;
   }
-}
\ No newline at end of file
+}
index 06618e07ce73e3a6c78c2512ce5603d493323092..ea1fa0fede8809bba3cdf00670232d6d54ad204c 100644 (file)
@@ -70,6 +70,12 @@ protected:
    */
   Node getModelValue( TNode n );
 public:
+  /**
+   * Get value function.  This should be called only after a ModelBuilder has called buildModel(...)
+   * on this model.
+   */
+  Node getValue( TNode n );
+
   /** get existing domain value, with possible exclusions
     *   This function returns a term in d_rep_set.d_type_reps[tn] but not in exclude
     */
@@ -108,8 +114,10 @@ public:
   bool areEqual( Node a, Node b );
   bool areDisequal( Node a, Node b );
 public:
-  /** get value function */
+  /** get value function for Exprs. */
   Expr getValue( const Expr& expr );
+
+
   /** to stream function */
   void toStream( std::ostream& out );
 public: