Printing for higher-order (#1347)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 10 Nov 2017 13:53:32 +0000 (07:53 -0600)
committerGitHub <noreply@github.com>
Fri, 10 Nov 2017 13:53:32 +0000 (07:53 -0600)
src/printer/smt2/smt2_printer.cpp

index 3caeeaaaa407b06b1a183181efd0bb6ed1d4d2b7..8a80ba59eab636167e121fd9803c5ca0e7853154 100644 (file)
@@ -363,13 +363,12 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     break;
   case kind::CHAIN: break;
   case kind::FUNCTION_TYPE:
-    for(size_t i = 0; i < n.getNumChildren() - 1; ++i) {
-      if(i > 0) {
-        out << ' ';
-      }
-      out << n[i];
+    out << "->";
+    for(size_t i = 0; i < n.getNumChildren(); ++i) {
+      out << " ";
+      toStream(out, n[i], toDepth, types, TypeNode::null());
     }
-    out << ") " << n[n.getNumChildren() - 1];
+    out << ")";
     return;
   case kind::SEXPR: break;
 
@@ -383,7 +382,10 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
 
     // uf theory
   case kind::APPLY_UF: typeChildren = true; break;
-
+    // higher-order
+  case kind::HO_APPLY: break;
+  case kind::LAMBDA: out << smtKindString(k) << " "; break;
+  
     // arith theory
   case kind::PLUS:
   case kind::MULT:
@@ -817,6 +819,8 @@ static string smtKindString(Kind k) throw() {
 
     // uf theory
   case kind::APPLY_UF: break;
+  
+  case kind::LAMBDA: return "lambda";
 
     // arith theory
   case kind::PLUS: return "+";