Simplify model printing modes (#7049)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Sun, 22 Aug 2021 20:03:08 +0000 (15:03 -0500)
committerGitHub <noreply@github.com>
Sun, 22 Aug 2021 20:03:08 +0000 (20:03 +0000)
This removes the model printing mode options::ModelUninterpPrintMode::DtEnum which was previously used to print uninterpreted sorts as enumeration datatypes in the model. This mode was to my knowledge never used and moreover will not be easy to implement in the API.

This is work towards finalizing the API for models.

This PR also removes a file that I failed to delete in a recent PR.

src/CMakeLists.txt
src/options/options_handler.h
src/options/printer_modes.cpp [deleted file]
src/options/printer_modes.h [deleted file]
src/options/smt_options.toml
src/printer/cvc/cvc_printer.cpp
src/printer/smt2/smt2_printer.cpp

index 2aa91f61b51d15f4bc8cb512428a4419a35c4479..9d887cc636a807bcefe59726e21096f670f556a2 100644 (file)
@@ -65,8 +65,6 @@ libcvc5_add_sources(
   options/options_public.h
   options/outputc.cpp
   options/outputc.h
-  options/printer_modes.cpp
-  options/printer_modes.h
   options/set_language.cpp
   options/set_language.h
   preprocessing/assertion_pipeline.cpp
index d6b81525d707296a82fdf2d455e726f1a6089436..ba3951c0023afc0cc3dd61b7cfa313a97e751bbb 100644 (file)
@@ -27,7 +27,6 @@
 #include "options/language.h"
 #include "options/managed_streams.h"
 #include "options/option_exception.h"
-#include "options/printer_modes.h"
 #include "options/quantifiers_options.h"
 
 namespace cvc5 {
@@ -100,11 +99,6 @@ public:
                       const std::string& flag,
                       bool arg);
 
-  // printer/options_handlers.h
-  InstFormatMode stringToInstFormatMode(const std::string& option,
-                                        const std::string& flag,
-                                        const std::string& optarg);
-
   /**
    * Throws a ModalException if this option is being set after final
    * initialization.
diff --git a/src/options/printer_modes.cpp b/src/options/printer_modes.cpp
deleted file mode 100644 (file)
index b2d8ec7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/******************************************************************************
- * Top contributors (to current version):
- *   Mathias Preiner, Andrew Reynolds
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved.  See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * [[ Add one-line brief description here ]]
- *
- * [[ Add lengthier description here ]]
- * \todo document this file
- */
-
-#include "options/printer_modes.h"
-
-namespace cvc5::options {
-
-std::ostream& operator<<(std::ostream& out, InstFormatMode mode)
-{
-  out << "InstFormatMode::";
-  switch (mode)
-  {
-    case options::InstFormatMode::DEFAULT: out << "DEFAULT"; break;
-    case options::InstFormatMode::SZS: out << "SZS"; break;
-    default: out << "UNKNOWN![" << unsigned(mode) << "]";
-  }
-  return out;
-}
-
-}  // namespace cvc5
diff --git a/src/options/printer_modes.h b/src/options/printer_modes.h
deleted file mode 100644 (file)
index 093bff7..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/******************************************************************************
- * Top contributors (to current version):
- *   Mathias Preiner, Andrew Reynolds, Tim King
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved.  See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * [[ Add one-line brief description here ]]
- *
- * [[ Add lengthier description here ]]
- * \todo document this file
- */
-
-#include "cvc5_public.h"
-
-#ifndef CVC5__PRINTER__MODES_H
-#define CVC5__PRINTER__MODES_H
-
-#include <iostream>
-
-namespace cvc5 {
-namespace options {
-
-/** Enumeration of inst_format modes (how to print models from get-model
- * command). */
-enum class InstFormatMode
-{
-  /** default mode (print expressions in the output language format) */
-  DEFAULT,
-  /** print as SZS proof */
-  SZS,
-};
-
-std::ostream& operator<<(std::ostream& out, InstFormatMode mode);
-
-}  // namespace options
-
-}  // namespace cvc5
-
-#endif /* CVC5__PRINTER__MODEL_FORMAT_H */
index 8094b5a6bf23e9a5f55935e845ab76f756a70411..e461b803a9629670b1cc547e72b7b566651ed1ab 100644 (file)
@@ -354,10 +354,7 @@ name   = "SMT Layer"
   type       = "ModelUninterpPrintMode"
   default    = "None"
   help       = "determines how to print uninterpreted elements in models"
-  help_mode  = "uninterpreted elements in models printing  modes."
-[[option.mode.DtEnum]]
-  name = "dtenum"
-  help = "print uninterpreted elements as datatype enumerations, where the sort is the datatype"
+  help_mode  = "uninterpreted elements in models printing modes."
 [[option.mode.DeclSortAndFun]]
   name = "decl-sort-and-fun"
   help = "print uninterpreted elements declare-fun, and also include a declare-sort for the sort"
index be6cdd907e093d00064dc9f851507933fa0d8694..11959f37b38113ff311c4e077c03d59242d153db 100644 (file)
@@ -1040,22 +1040,7 @@ void CvcPrinter::toStreamModelSort(std::ostream& out,
   }
   const theory::TheoryModel* tm = m.getTheoryModel();
   const std::vector<Node>* type_reps = tm->getRepSet()->getTypeRepsOrNull(tn);
-  if (options::modelUninterpPrint() == options::ModelUninterpPrintMode::DtEnum
-      && type_reps != nullptr)
-  {
-    out << "DATATYPE" << std::endl;
-    out << "  " << tn << " = ";
-    for (size_t i = 0; i < type_reps->size(); i++)
-    {
-      if (i > 0)
-      {
-        out << "| ";
-      }
-      out << (*type_reps)[i] << " ";
-    }
-    out << std::endl << "END;" << std::endl;
-  }
-  else if (type_reps != nullptr)
+  if (type_reps != nullptr)
   {
     out << "% cardinality of " << tn << " is " << type_reps->size()
         << std::endl;
@@ -1105,22 +1090,6 @@ void CvcPrinter::toStreamModelTerm(std::ostream& out,
   // We get the value from the theory model directly, which notice
   // does not have to go through the standard SmtEngine::getValue interface.
   Node val = tm->getValue(n);
-  if (options::modelUninterpPrint() == options::ModelUninterpPrintMode::DtEnum
-      && val.getKind() == kind::STORE)
-  {
-    TypeNode type_node = val[1].getType();
-    if (tn.isSort())
-    {
-      const std::vector<Node>* type_reps =
-          tm->getRepSet()->getTypeRepsOrNull(type_node);
-      if (type_reps != nullptr)
-      {
-        Cardinality indexCard(type_reps->size());
-        val = theory::arrays::TheoryArraysRewriter::normalizeConstant(
-            val, indexCard);
-      }
-    }
-  }
   out << " = " << val << ";" << std::endl;
 }
 
index c319e20e6731e3e49af9e6902370166421e54835..04d8c34c40bc294adbfd1cbb4cf65ed3ae17f0e9 100644 (file)
@@ -1294,16 +1294,6 @@ void Smt2Printer::toStreamModelSort(std::ostream& out,
   }
   const theory::TheoryModel* tm = m.getTheoryModel();
   std::vector<Node> elements = tm->getDomainElements(tn);
-  if (options::modelUninterpPrint() == options::ModelUninterpPrintMode::DtEnum)
-  {
-    out << "(declare-datatypes ((" << tn << " 0)) (";
-    for (const Node& type_ref : elements)
-    {
-      out << "(" << type_ref << ")";
-    }
-    out << ")))" << endl;
-    return;
-  }
   // print the cardinality
   out << "; cardinality of " << tn << " is " << elements.size() << endl;
   if (options::modelUninterpPrint()
@@ -1350,19 +1340,6 @@ void Smt2Printer::toStreamModelTerm(std::ostream& out,
   }
   else
   {
-    if (options::modelUninterpPrint() == options::ModelUninterpPrintMode::DtEnum
-        && val.getKind() == kind::STORE)
-    {
-      TypeNode tn = val[1].getType();
-      const std::vector<Node>* type_refs =
-          tm->getRepSet()->getTypeRepsOrNull(tn);
-      if (tn.isSort() && type_refs != nullptr)
-      {
-        Cardinality indexCard(type_refs->size());
-        val = theory::arrays::TheoryArraysRewriter::normalizeConstant(
-            val, indexCard);
-      }
-    }
     out << "(define-fun " << n << " () " << n.getType() << " ";
     // call toStream and force its type to be proper
     toStreamCastToType(out, val, -1, n.getType());