Fix bug 554 (nominally).
authorMorgan Deters <mdeters@cs.nyu.edu>
Sat, 8 Mar 2014 04:47:56 +0000 (23:47 -0500)
committerMorgan Deters <mdeters@cs.nyu.edu>
Sat, 8 Mar 2014 04:47:56 +0000 (23:47 -0500)
src/smt/smt_engine.cpp

index 02542b6403a69b032ca9c1be8af8d898996ece7e..1bbc99f09624568916ca10b107b04923fcfef244 100644 (file)
@@ -3677,8 +3677,15 @@ Expr SmtEngine::getValue(const Expr& ex) const throw(ModalException, TypeCheckin
   // Expand, then normalize
   hash_map<Node, Node, NodeHashFunction> cache;
   n = d_private->expandDefinitions(n, cache);
-  n = d_private->rewriteBooleanTerms(n);
-  n = Rewriter::rewrite(n);
+  // There are two ways model values for terms are computed (for historical
+  // reasons).  One way is that used in check-model; the other is that
+  // used by the Model classes.  It's not clear to me exactly how these
+  // two are different, but they need to be unified.  This ugly hack here
+  // is to fix bug 554 until we can revamp boolean-terms and models [MGD]
+  if(!n.getType().isFunction()) {
+    n = d_private->rewriteBooleanTerms(n);
+    n = Rewriter::rewrite(n);
+  }
 
   Trace("smt") << "--- getting value of " << n << endl;
   TheoryModel* m = d_theoryEngine->getModel();