portfolio: fix export of emptyset
authorKshitij Bansal <kshitij@cs.nyu.edu>
Fri, 21 Feb 2014 18:52:34 +0000 (13:52 -0500)
committerKshitij Bansal <kshitij@cs.nyu.edu>
Fri, 21 Feb 2014 18:57:50 +0000 (13:57 -0500)
src/expr/expr_manager_template.cpp
src/expr/expr_template.cpp
src/smt/smt_engine.cpp

index 41f69e5875f9d80cf6bcabac08becf942eec1256..c733e37eaf50278fa1cb13cc977408176e6584d7 100644 (file)
@@ -934,7 +934,7 @@ namespace expr {
 Node exportInternal(TNode n, ExprManager* from, ExprManager* to, ExprManagerMapCollection& vmap);
 
 TypeNode exportTypeInternal(TypeNode n, NodeManager* from, NodeManager* to, ExprManagerMapCollection& vmap) {
-  Debug("export") << "type: " << n << std::endl;
+  Debug("export") << "type: " << n << " " << n.getId() << std::endl;
   if(theory::kindToTheoryId(n.getKind()) == theory::THEORY_DATATYPES) {
     throw ExportUnsupportedException
       ("export of types belonging to theory of DATATYPES kinds unsupported");
index f7e5498ddd4542c69d0c7f3b081a1f6d66d85633..60f34867c820535a93dca9a393342276fde0fed6 100644 (file)
@@ -135,6 +135,10 @@ public:
     }
 
     if(n.getMetaKind() == metakind::CONSTANT) {
+      if(n.getKind() == kind::EMPTYSET) {
+        Type type = from->exportType(n.getConst< ::CVC4::EmptySet >().getType(), to, vmap);
+        return to->mkConst(::CVC4::EmptySet(type));
+      }
       return exportConstant(n, NodeManager::fromExprManager(to));
     } else if(n.isVar()) {
       Expr from_e(from, new Node(n));
@@ -572,6 +576,7 @@ namespace expr {
 
 static Node exportConstant(TNode n, NodeManager* to) {
   Assert(n.isConst());
+  Debug("export") << "constant: " << n << std::endl;
   switch(n.getKind()) {
 ${exportConstant_cases}
 
index 4ab8cb548fe5cb13d606064beb658ed326a70ea2..9abd6e165f856597bc1d41b2dab743d70f65a8b8 100644 (file)
@@ -1439,9 +1439,9 @@ void SmtEngine::defineFunction(Expr func,
       stringstream ss;
       ss << "Declared type of defined constant does not match its definition\n"
          << "The constant   : " << func << "\n"
-         << "Declared type  : " << funcType << "\n"
+         << "Declared type  : " << funcType << " " << Type::getTypeNode(funcType)->getId() << "\n"
          << "The definition : " << formula << "\n"
-         << "Definition type: " << formulaType;
+         << "Definition type: " << formulaType << " " << Type::getTypeNode(formulaType)->getId();
       throw TypeCheckingException(func, ss.str());
     }
   }