Minor improvement and fix to smt2 printer (#6009)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 26 Feb 2021 18:47:05 +0000 (12:47 -0600)
committerGitHub <noreply@github.com>
Fri, 26 Feb 2021 18:47:05 +0000 (12:47 -0600)
This permits access to the static method string smtKindString(Kind k, Variant v) which is required for LFSC proof conversion. It also makes a fix to how a string kind is printed.

src/printer/smt2/smt2_printer.cpp
src/printer/smt2/smt2_printer.h

index bc4ea16de46070e1d25b537f7c5f31247e9d4588..c7962417a3dd310ecbf101dbd894e71ea867d45b 100644 (file)
@@ -50,8 +50,6 @@ namespace smt2 {
 
 static OutputLanguage variantToLanguage(Variant v);
 
-static string smtKindString(Kind k, Variant v);
-
 /** returns whether the variant is smt-lib 2.6 or greater */
 bool isVariant_2_6(Variant v) { return v == smt2_6_variant; }
 
@@ -1066,7 +1064,7 @@ void Smt2Printer::toStreamCastToType(std::ostream& out,
   toStream(out, nasc, toDepth);
 }
 
-static string smtKindString(Kind k, Variant v)
+std::string Smt2Printer::smtKindString(Kind k, Variant v)
 {
   switch(k) {
     // builtin theory
@@ -1292,7 +1290,7 @@ static string smtKindString(Kind k, Variant v)
   case kind::STRING_STOI: return "str.to_int";
   case kind::STRING_IN_REGEXP: return "str.in_re";
   case kind::STRING_TO_REGEXP: return "str.to_re";
-  case kind::REGEXP_EMPTY: return "re.nostr";
+  case kind::REGEXP_EMPTY: return "re.none";
   case kind::REGEXP_SIGMA: return "re.allchar";
   case kind::REGEXP_CONCAT: return "re.++";
   case kind::REGEXP_UNION: return "re.union";
index 6ed0938f8051b967ded42e93d5b5022fad40f065..8934967b952a736316e1dc0d6b267922e746c3c3 100644 (file)
@@ -223,6 +223,12 @@ class Smt2Printer : public CVC4::Printer
   void toStreamCmdDeclarationSequence(
       std::ostream& out, const std::vector<Command*>& sequence) const override;
 
+  /**
+   * Get the string for a kind k, which returns how the kind k is printed in
+   * the SMT-LIB format (with variant v).
+   */
+  static std::string smtKindString(Kind k, Variant v = smt2_6_variant);
+
  private:
   /**
    * The main printing method for nodes n.