Fix tuple printing in LFSC (#8696)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 2 May 2022 00:32:32 +0000 (19:32 -0500)
committerGitHub <noreply@github.com>
Mon, 2 May 2022 00:32:32 +0000 (19:32 -0500)
We weren't collecting them as user-defined types after the recent refactor to Tuples.

src/proof/lfsc/lfsc_node_converter.cpp
src/proof/lfsc/lfsc_node_converter.h

index f8e79e014146d73133c08ac8e6f34c0726276629..6cd2d56ebf41a253b8db25f024d79ead962a3ec5 100644 (file)
@@ -495,6 +495,18 @@ Node LfscNodeConverter::postConvert(Node n)
   return n;
 }
 
+TypeNode LfscNodeConverter::preConvertType(TypeNode tn)
+{
+  if (tn.getKind() == TUPLE_TYPE)
+  {
+    // Must collect the tuple type here, since at post-order traversal, the
+    // type has been modified and no longer maintains the mapping to its
+    // datatype encoding.
+    d_declTypes.insert(tn);
+  }
+  return tn;
+}
+
 TypeNode LfscNodeConverter::postConvertType(TypeNode tn)
 {
   NodeManager* nm = NodeManager::currentNM();
index 497c94fd58d33ca925831e41b04adf24c596d565..38754961f203125d028c6319f2e87295d9d94cce 100644 (file)
@@ -40,6 +40,8 @@ class LfscNodeConverter : public NodeConverter
   Node preConvert(Node n) override;
   /** convert at post-order traversal */
   Node postConvert(Node n) override;
+  /** convert type at pre-order traversal */
+  TypeNode preConvertType(TypeNode tn) override;
   /** convert type at post-order traversal */
   TypeNode postConvertType(TypeNode tn) override;
   /**