More precise includes of `Node` constants (#6617)
authorAndres Noetzli <andres.noetzli@gmail.com>
Wed, 26 May 2021 14:30:17 +0000 (07:30 -0700)
committerGitHub <noreply@github.com>
Wed, 26 May 2021 14:30:17 +0000 (14:30 +0000)
We store constants, e.g., BitVector and Rational, in our node infrastructure. As a result, we were indirectly including some headers in almost all files, e.g., the GMP headers. This commit changes that by forward-declaring the classes for the constants. As a result, we have to include headers like util/rational.h explicitly when we use Rational but it saves about 3 minutes in compile time (CPU time).

The commit changes RoundingMode from an enum to an enum class such that it can be forward declared.

156 files changed:
src/api/cpp/cvc5.cpp
src/expr/bound_var_manager.cpp
src/expr/dtype.cpp
src/expr/dtype.h
src/expr/dtype_cons.cpp
src/expr/metakind_template.cpp
src/expr/metakind_template.h
src/expr/mkmetakind
src/expr/node_manager.cpp
src/expr/node_manager.h
src/expr/sequence.cpp
src/expr/term_context_node.cpp
src/expr/type_node.cpp
src/expr/type_node.h
src/omt/bitvector_optimizer.cpp
src/preprocessing/passes/bv_gauss.h
src/preprocessing/passes/bv_to_int.cpp
src/preprocessing/passes/int_to_bv.cpp
src/preprocessing/passes/miplib_trick.cpp
src/preprocessing/passes/real_to_int.cpp
src/preprocessing/passes/unconstrained_simplifier.cpp
src/preprocessing/util/ite_utilities.cpp
src/printer/cvc/cvc_printer.cpp
src/printer/smt2/smt2_printer.cpp
src/proof/proof_checker.cpp
src/prop/proof_cnf_stream.cpp
src/smt/abstract_values.cpp
src/smt/proof_post_processor.cpp
src/smt/smt_engine.cpp
src/smt_util/nary_builder.cpp
src/theory/arith/arith_ite_utils.h
src/theory/arith/arith_msum.cpp
src/theory/arith/arith_rewriter.cpp
src/theory/arith/kinds
src/theory/arith/nl/cad/proof_generator.cpp
src/theory/arith/nl/ext/ext_state.cpp
src/theory/arith/nl/ext/factoring_check.cpp
src/theory/arith/nl/ext/monomial_check.cpp
src/theory/arith/nl/ext/tangent_plane_check.cpp
src/theory/arith/nl/iand_solver.cpp
src/theory/arith/nl/iand_utils.cpp
src/theory/arith/theory_arith_type_rules.cpp
src/theory/arrays/kinds
src/theory/arrays/theory_arrays.cpp
src/theory/arrays/theory_arrays_rewriter.cpp
src/theory/arrays/theory_arrays_type_rules.cpp
src/theory/arrays/type_enumerator.h
src/theory/bags/bag_solver.cpp
src/theory/bags/bags_rewriter.cpp
src/theory/bags/inference_generator.cpp
src/theory/bags/kinds
src/theory/bags/normal_form.cpp
src/theory/bags/term_registry.cpp
src/theory/bags/theory_bags_type_enumerator.cpp
src/theory/bags/theory_bags_type_rules.cpp
src/theory/bags/theory_bags_type_rules.h
src/theory/booleans/kinds
src/theory/booleans/proof_circuit_propagator.cpp
src/theory/booleans/theory_bool_rewriter.cpp
src/theory/builtin/kinds
src/theory/builtin/theory_builtin_rewriter.cpp
src/theory/builtin/theory_builtin_type_rules.cpp
src/theory/builtin/theory_builtin_type_rules.h
src/theory/bv/abstraction.cpp
src/theory/bv/bitblast/bitblast_strategies_template.h
src/theory/bv/bv_inequality_graph.h
src/theory/bv/bv_subtheory_algebraic.cpp
src/theory/bv/bv_subtheory_core.cpp
src/theory/bv/kinds
src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
src/theory/bv/theory_bv_rewrite_rules_normalization.h
src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
src/theory/bv/theory_bv_rewrite_rules_simplification.h
src/theory/bv/theory_bv_type_rules.cpp
src/theory/bv/theory_bv_utils.cpp
src/theory/bv/theory_bv_utils.h
src/theory/datatypes/datatypes_rewriter.cpp
src/theory/datatypes/infer_proof_cons.cpp
src/theory/datatypes/kinds
src/theory/datatypes/theory_datatypes_type_rules.cpp
src/theory/datatypes/theory_datatypes_utils.cpp
src/theory/datatypes/type_enumerator.cpp
src/theory/datatypes/type_enumerator.h
src/theory/fp/fp_converter.cpp
src/theory/fp/fp_expand_defs.cpp
src/theory/fp/kinds
src/theory/fp/theory_fp.cpp
src/theory/fp/theory_fp_rewriter.cpp
src/theory/fp/theory_fp_type_rules.cpp
src/theory/fp/type_enumerator.h
src/theory/quantifiers/bv_inverter.cpp
src/theory/quantifiers/cegqi/vts_term_cache.cpp
src/theory/quantifiers/ematching/pattern_term_selector.cpp
src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
src/theory/quantifiers/sygus/sygus_unif_rl.h
src/theory/quantifiers/term_util.cpp
src/theory/sep/theory_sep.cpp
src/theory/sep/theory_sep_rewriter.cpp
src/theory/sets/cardinality_extension.cpp
src/theory/sets/kinds
src/theory/sets/normal_form.h
src/theory/sets/theory_sets_private.cpp
src/theory/sets/theory_sets_rels.cpp
src/theory/sets/theory_sets_rewriter.cpp
src/theory/sets/theory_sets_type_enumerator.cpp
src/theory/sets/theory_sets_type_rules.cpp
src/theory/strings/arith_entail.cpp
src/theory/strings/base_solver.cpp
src/theory/strings/core_solver.cpp
src/theory/strings/inference_manager.cpp
src/theory/strings/kinds
src/theory/strings/regexp_elim.cpp
src/theory/strings/regexp_entail.cpp
src/theory/strings/regexp_operation.cpp
src/theory/strings/sequences_rewriter.cpp
src/theory/strings/solver_state.cpp
src/theory/strings/strings_entail.cpp
src/theory/strings/strings_fmf.cpp
src/theory/strings/strings_rewriter.cpp
src/theory/strings/term_registry.cpp
src/theory/strings/theory_strings_preprocess.cpp
src/theory/strings/theory_strings_type_rules.cpp
src/theory/strings/theory_strings_utils.cpp
src/theory/strings/type_enumerator.cpp
src/theory/subs_minimize.cpp
src/theory/theory_model.cpp
src/theory/theory_model.h
src/theory/theory_model_builder.cpp
src/theory/type_enumerator.h
src/theory/uf/cardinality_extension.cpp
src/theory/uf/theory_uf_type_rules.cpp
src/util/CMakeLists.txt
src/util/floatingpoint_literal_symfpu_traits.cpp
src/util/roundingmode.cpp [new file with mode: 0644]
src/util/roundingmode.h
test/unit/node/node_algorithm_black.cpp
test/unit/node/node_black.cpp
test/unit/node/node_white.cpp
test/unit/node/type_node_white.cpp
test/unit/preprocessing/pass_foreign_theory_rewrite_white.cpp
test/unit/printer/smt2_printer_black.cpp
test/unit/theory/sequences_rewriter_white.cpp
test/unit/theory/strings_rewriter_white.cpp
test/unit/theory/theory_bags_normal_form_white.cpp
test/unit/theory/theory_bags_rewriter_white.cpp
test/unit/theory/theory_bags_type_rules_white.cpp
test/unit/theory/theory_black.cpp
test/unit/theory/theory_bv_int_blaster_white.cpp
test/unit/theory/theory_bv_opt_white.cpp
test/unit/theory/theory_int_opt_white.cpp
test/unit/theory/theory_sets_type_rules_white.cpp
test/unit/theory/theory_strings_utils_white.cpp
test/unit/theory/theory_strings_word_white.cpp
test/unit/theory/type_enumerator_white.cpp
test/unit/util/array_store_all_white.cpp
test/unit/util/datatype_black.cpp

index 0da42f173d1a8b42757dbcba58011863c111890d..436ac985674297253d2022ab805bac65bc942490 100644 (file)
 #include "base/check.h"
 #include "base/configuration.h"
 #include "base/modal_exception.h"
+#include "expr/array_store_all.h"
+#include "expr/ascription_type.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
 #include "expr/dtype_selector.h"
+#include "expr/emptybag.h"
+#include "expr/emptyset.h"
 #include "expr/kind.h"
 #include "expr/metakind.h"
 #include "expr/node.h"
@@ -50,6 +54,7 @@
 #include "expr/node_manager.h"
 #include "expr/sequence.h"
 #include "expr/type_node.h"
+#include "expr/uninterpreted_constant.h"
 #include "options/main_options.h"
 #include "options/option_exception.h"
 #include "options/options.h"
 #include "smt/model.h"
 #include "smt/smt_engine.h"
 #include "smt/smt_mode.h"
+#include "theory/datatypes/tuple_project_op.h"
 #include "theory/logic_info.h"
 #include "theory/theory_model.h"
+#include "util/abstract_value.h"
+#include "util/bitvector.h"
+#include "util/divisible.h"
+#include "util/floatingpoint.h"
+#include "util/iand.h"
 #include "util/random.h"
+#include "util/regexp.h"
 #include "util/result.h"
+#include "util/roundingmode.h"
 #include "util/statistics_registry.h"
 #include "util/statistics_stats.h"
 #include "util/statistics_value.h"
+#include "util/string.h"
 #include "util/utility.h"
 
 namespace cvc5 {
index e4b1be6917bd0f6ac63c8c192421a0781552ac8f..820c82d228ee8e01209b56faa091a2ad29c07d0e 100644 (file)
@@ -16,6 +16,7 @@
 #include "expr/bound_var_manager.h"
 
 #include "expr/node_manager_attributes.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index 52c15a08d8645ca6f8edce77b89584c30a01c152..80732eab493b9246f48b9437641f521f0ef17eb1 100644 (file)
@@ -20,6 +20,7 @@
 #include "expr/node_algorithm.h"
 #include "expr/skolem_manager.h"
 #include "expr/type_matcher.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index 584dc1615ab353db6d5a16c98d7ff1946a15dd23..a608b9adb584ee7058074d26ce624463b0bc01d0 100644 (file)
 #include <map>
 #include <string>
 #include <vector>
+
 #include "expr/attribute.h"
 #include "expr/node.h"
 #include "expr/type_node.h"
+#include "util/cardinality.h"
 
 namespace cvc5 {
 
index 0baf65dd6bc96794826c102856df6de49806d6b5..b71f49e87a9ae36506789c72df2cefd724fa177f 100644 (file)
@@ -14,6 +14,7 @@
  */
 #include "expr/dtype_cons.h"
 
+#include "expr/ascription_type.h"
 #include "expr/dtype.h"
 #include "expr/node_manager.h"
 #include "expr/skolem_manager.h"
index 1b05815d8436ea8c94c5f3e91bcf07af1323dee1..1d0f5dd50ccacf62cec0a015abd4288da7537158 100644 (file)
 
 #include <iostream>
 
+// clang-format off
+${metakind_includes}
+// clang-format off
+
 namespace cvc5 {
 namespace kind {
 
index 760cda98147f94533832f9085969a9c029118d14..09469915fd7db4d984e20f82afbf602bd9481516 100644 (file)
@@ -129,14 +129,14 @@ struct NodeValuePoolEq {
 
 #endif /* CVC5__KIND__METAKIND_H */
 
-// clang-format off
-${metakind_includes}
-// clang-format on
-
 #ifdef CVC5__NODE_MANAGER_NEEDS_CONSTANT_MAP
 
 namespace cvc5 {
 
+// clang-format off
+${metakind_fwd_decls}
+// clang-format on
+
 namespace expr {
 // clang-format off
 ${metakind_getConst_decls}
index a5801b9fe7c01efcf62896e859cf89f9da095a44..88208d77690d9157af9478485323132e5a3a6083 100755 (executable)
@@ -42,6 +42,7 @@ me=$(basename "$0")
 
 template=$1; shift
 
+metakind_fwd_decls=
 metakind_includes=
 metakind_kinds=
 metakind_constantMaps=
@@ -202,65 +203,60 @@ function parameterized {
 }
 
 function constant {
-  # constant K T Hasher header ["comment"]
+  # constant K T Hasher header ["comment"]
 
   lineno=${BASH_LINENO[0]}
 
   check_theory_seen
 
-  if ! expr "$2" : '\(::*\)' >/dev/null; then
-    if ! primitive_type "$2"; then
-      # if there's an embedded space, we're probably doing something
-      # tricky to specify the CONST payload, like "int const*"; in any
-      # case, this warning gives too many false positives, so disable it
-      if ! expr "$2" : '..* ..*' >/dev/null; then
-        echo "$kf:$lineno: warning: constant $1 class \`$2' isn't fully-qualified (e.g., ::cvc5::Rational)" >&2
-      fi
-    fi
+  if ! expr "$4" : '\(::*\)' >/dev/null; then
+    echo "$kf:$lineno: warning: constant $1 hasher \`$4' isn't fully-qualified (e.g., ::cvc5::RationalHashFunction)" >&2
   fi
-  if ! expr "$3" : '\(::*\)' >/dev/null; then
-    echo "$kf:$lineno: warning: constant $1 hasher \`$3' isn't fully-qualified (e.g., ::cvc5::RationalHashFunction)" >&2
+
+  if [[ "$2" != "skip" ]]; then
+    metakind_fwd_decls="${metakind_fwd_decls}
+$2 $3;"
   fi
 
   # Avoid including the same header multiple times
-  if [ -n "$4" ] && [[ "${metakind_includes}" != *"#include \"$4\""* ]]; then
+  if [ -n "$5" ] && [[ "${metakind_includes}" != *"#include \"$5\""* ]]; then
     metakind_includes="${metakind_includes}
-#include \"$4\""
+#include \"$5\""
   fi
   register_metakind CONSTANT "$1" 0
   metakind_getConst_decls="${metakind_getConst_decls}
 template <>
-$2 const& NodeValue::getConst< $2 >() const;
+$3 const& NodeValue::getConst< $3 >() const;
 "
   metakind_constantMaps_decls="${metakind_constantMaps_decls}
 template <>
-struct ConstantMap< $2 > {
+struct ConstantMap< $3 > {
   // typedef $theory_class OwningTheory;
   enum { kind = ::cvc5::kind::$1 };
-};/* ConstantMap< $2 > */
+};/* ConstantMap< $3 > */
 
 template <>
 struct ConstantMapReverse< ::cvc5::kind::$1 > {
-  typedef $2 T;
+  typedef $3 T;
 };/* ConstantMapReverse< ::cvc5::kind::$1 > */
   "
   metakind_constantMaps="${metakind_constantMaps}
-// The reinterpret_cast of d_children to \"$2 const*\"
+// The reinterpret_cast of d_children to \"$3 const*\"
 // flags a \"strict aliasing\" warning; it's okay, because we never access
 // the embedded constant as a NodeValue* child, and never access an embedded
 // NodeValue* child as a constant.
 #pragma GCC diagnostic ignored \"-Wstrict-aliasing\"
 
 template <>
-$2 const& NodeValue::getConst< $2 >() const {
+$3 const& NodeValue::getConst< $3 >() const {
   AssertArgument(getKind() == ::cvc5::kind::$1, *this,
-                 \"Improper kind for getConst<$2>()\");
+                 \"Improper kind for getConst<$3>()\");
   // To support non-inlined CONSTANT-kinded NodeValues (those that are
   // \"constructed\" when initially checking them against the NodeManager
   // pool), we must check d_nchildren here.
   return d_nchildren == 0
-    ? *reinterpret_cast< $2 const* >(d_children)
-    : *reinterpret_cast< $2 const* >(d_children[0]);
+    ? *reinterpret_cast< $3 const* >(d_children)
+    : *reinterpret_cast< $3 const* >(d_children[0]);
 }
 
 // re-enable the warning
@@ -273,17 +269,17 @@ $2 const& NodeValue::getConst< $2 >() const {
 "
   metakind_constHashes="${metakind_constHashes}
   case kind::$1:
-    return $3()(nv->getConst< $2 >());
+    return $4()(nv->getConst< $3 >());
 "
   metakind_constPrinters="${metakind_constPrinters}
   case kind::$1:
-    out << nv->getConst< $2 >();
+    out << nv->getConst< $3 >();
     break;
 "
-  cname=`echo "$2" | awk 'BEGIN {FS="::"} {print$NF}'`
+  cname=`echo "$3" | awk 'BEGIN {FS="::"} {print$NF}'`
   metakind_constDeleters="${metakind_constDeleters}
   case kind::$1:
-    std::allocator< $2 >().destroy(reinterpret_cast< $2* >(nv->d_children));
+    std::allocator< $3 >().destroy(reinterpret_cast< $3* >(nv->d_children));
     break;
 "
 }
@@ -397,6 +393,7 @@ check_builtin_theory_seen
 
 text=$(cat "$template")
 for var in \
+    metakind_fwd_decls \
     metakind_includes \
     metakind_kinds \
     metakind_constantMaps \
index c44720b67da3c8668b0135e3353a7ee70921d844..1e6a3881562884156498897d910ca53c1bb20b1c 100644 (file)
 #include "base/listener.h"
 #include "expr/attribute.h"
 #include "expr/bound_var_manager.h"
+#include "expr/datatype_index.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
 #include "expr/metakind.h"
 #include "expr/node_manager_attributes.h"
 #include "expr/skolem_manager.h"
 #include "expr/type_checker.h"
+#include "theory/bags/make_bag_op.h"
+#include "theory/sets/singleton_op.h"
+#include "util/abstract_value.h"
+#include "util/bitvector.h"
 #include "util/resource_manager.h"
 
 using namespace std;
index e99c70f7ce9e95d3fccbf50f50dec5f5ea75897c..ad0593ceeac8a57e11729c9f3a7bd1e26ec3904f 100644 (file)
 #ifndef CVC5__NODE_MANAGER_H
 #define CVC5__NODE_MANAGER_H
 
-#include <vector>
 #include <string>
 #include <unordered_set>
+#include <vector>
 
 #include "base/check.h"
 #include "expr/kind.h"
 #include "expr/metakind.h"
 #include "expr/node_value.h"
+#include "util/floatingpoint_size.h"
 
 namespace cvc5 {
 
index 4202c70ecc2f88e3ec957ddcaa92724320d47b68..6b15f33e0a5ddab1d6fd7d77f88c417dba686b03 100644 (file)
@@ -15,6 +15,7 @@
 
 #include "expr/sequence.h"
 
+#include <limits>
 #include <sstream>
 #include <vector>
 
index 09f1de7f1c1b313ace664af4ccae89711cc0203b..dbf4cccaedaa28e487abc4893448dd98c990e6fb 100644 (file)
@@ -16,6 +16,7 @@
 #include "expr/term_context_node.h"
 
 #include "expr/term_context.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index b4f2f7efa70d1ab0595b67a7089e2e89963a9af7..52a21040ebc3e4ef662fce464848f4b36db69777 100644 (file)
 
 #include <vector>
 
+#include "expr/datatype_index.h"
 #include "expr/dtype_cons.h"
 #include "expr/node_manager_attributes.h"
 #include "expr/type_properties.h"
 #include "options/base_options.h"
 #include "options/quantifiers_options.h"
 #include "theory/type_enumerator.h"
+#include "util/bitvector.h"
+#include "util/cardinality.h"
 
 using namespace std;
 
@@ -684,6 +687,18 @@ TypeNode TypeNode::getBagElementType() const
   return (*this)[0];
 }
 
+bool TypeNode::isBitVector(unsigned size) const
+{
+  return (getKind() == kind::BITVECTOR_TYPE
+          && getConst<BitVectorSize>() == size);
+}
+
+uint32_t TypeNode::getBitVectorSize() const
+{
+  Assert(isBitVector());
+  return getConst<BitVectorSize>();
+}
+
 }  // namespace cvc5
 
 namespace std {
index 1840820dc492f016924258d77d1504a9e27ae0d0..21e7b4d28d800405de5b0f98ab239018cd81aebd 100644 (file)
 #include "base/check.h"
 #include "expr/kind.h"
 #include "expr/metakind.h"
-#include "util/cardinality.h"
 #include "util/cardinality_class.h"
 
 namespace cvc5 {
 
 class NodeManager;
+class Cardinality;
 class DType;
 
 namespace expr {
@@ -657,7 +657,7 @@ private:
   unsigned getFloatingPointSignificandSize() const;
 
   /** Get the size of this bit-vector type */
-  unsigned getBitVectorSize() const;
+  uint32_t getBitVectorSize() const;
 
   /** Is this a sort kind */
   bool isSort() const;
@@ -1000,12 +1000,6 @@ inline bool TypeNode::isFloatingPoint(unsigned exp, unsigned sig) const {
           && getConst<FloatingPointSize>().significandWidth() == sig);
 }
 
-/** Is this a bit-vector type of size <code>size</code> */
-inline bool TypeNode::isBitVector(unsigned size) const {
-  return
-    ( getKind() == kind::BITVECTOR_TYPE && getConst<BitVectorSize>() == size );
-}
-
 /** Get the exponent size of this floating-point type */
 inline unsigned TypeNode::getFloatingPointExponentSize() const {
   Assert(isFloatingPoint());
@@ -1018,12 +1012,6 @@ inline unsigned TypeNode::getFloatingPointSignificandSize() const {
   return getConst<FloatingPointSize>().significandWidth();
 }
 
-/** Get the size of this bit-vector type */
-inline unsigned TypeNode::getBitVectorSize() const {
-  Assert(isBitVector());
-  return getConst<BitVectorSize>();
-}
-
 #ifdef CVC5_DEBUG
 /**
  * Pretty printer for use within gdb.  This is not intended to be used
index 1c3faddff00fe4a353a10a8734a9f9501d6a92cb..cd233295ef37d7a2781c4b4afa456250202028fe 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "options/smt_options.h"
 #include "smt/smt_engine.h"
+#include "util/bitvector.h"
 
 using namespace cvc5::smt;
 namespace cvc5::omt {
index c7cec2cc01a95a6785bc9637283ddde826b65bd2..8fafcb741942077aa856abf5a06c8d24e074276c 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "expr/node.h"
 #include "preprocessing/preprocessing_pass.h"
+#include "util/integer.h"
 
 namespace cvc5 {
 namespace preprocessing {
index 8b5d2417ba1c69ac1f13b4f8a149256b0aeb50dc..b6f53f8c26a9deeb5ee5b038555c002ac3e4d69f 100644 (file)
@@ -34,6 +34,9 @@
 #include "theory/bv/theory_bv_rewrite_rules_operator_elimination.h"
 #include "theory/bv/theory_bv_rewrite_rules_simplification.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
+#include "util/iand.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace preprocessing {
index 779e0a9316f831511eaeafcb497b129ee32af84c..7f03b9459711462c4babfc2f3d329458a61c63f2 100644 (file)
@@ -30,6 +30,8 @@
 #include "preprocessing/assertion_pipeline.h"
 #include "theory/rewriter.h"
 #include "theory/theory.h"
+#include "util/bitvector.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace preprocessing {
index f27ff836a53b9e70a006ab587f7a4685c1498c23..79fcc402883feeb4e824523511978b801fad0a68 100644 (file)
@@ -31,6 +31,7 @@
 #include "theory/theory_engine.h"
 #include "theory/theory_model.h"
 #include "theory/trust_substitutions.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace preprocessing {
index 9e84dc851ac22db09b8303b846028457f1cf449f..a60b4a097508a7115b89b21879d217fd1ca8ce98 100644 (file)
@@ -25,6 +25,7 @@
 #include "theory/arith/arith_msum.h"
 #include "theory/rewriter.h"
 #include "theory/theory_model.h"
+#include "util/rational.h"
 
 using namespace cvc5::theory;
 
index 54115bb54481217767ef1f8be80d6592b15dfce6..f13de5e74c40bc5743080f8e40cc6b5441647e4a 100644 (file)
@@ -27,6 +27,8 @@
 #include "smt/smt_statistics_registry.h"
 #include "theory/logic_info.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace preprocessing {
index 3e1b3659a7a5b8451a30103d2c57e62128afab0f..13910f53466941e3a8f873a88ddc72e9460923a1 100644 (file)
@@ -28,6 +28,7 @@
 #include "smt/smt_statistics_registry.h"
 #include "theory/rewriter.h"
 #include "theory/theory.h"
+#include "util/rational.h"
 
 using namespace std;
 namespace cvc5 {
index 42dfea3082c70018742b912ebcedb73e6c7add7f..be6cdd907e093d00064dc9f851507933fa0d8694 100644 (file)
 #include <typeinfo>
 #include <vector>
 
+#include "expr/array_store_all.h"
+#include "expr/ascription_type.h"
+#include "expr/datatype_index.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
 #include "expr/dtype_selector.h"
+#include "expr/emptyset.h"
 #include "expr/node_manager_attributes.h"  // for VarNameAttr
 #include "expr/node_visitor.h"
 #include "expr/sequence.h"
 #include "theory/arrays/theory_arrays_rewriter.h"
 #include "theory/substitutions.h"
 #include "theory/theory_model.h"
+#include "util/bitvector.h"
+#include "util/divisible.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 using namespace std;
 
index 2b1f1693195b7e22fa8eaf545cdae459d4ef1bb5..2163167a6c867547634a7ea8c8dc4ec0ee0937a7 100644 (file)
 #include <vector>
 
 #include "api/cpp/cvc5.h"
+#include "expr/array_store_all.h"
+#include "expr/ascription_type.h"
+#include "expr/datatype_index.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
+#include "expr/emptybag.h"
+#include "expr/emptyset.h"
 #include "expr/node_manager_attributes.h"
 #include "expr/node_visitor.h"
 #include "expr/sequence.h"
+#include "expr/uninterpreted_constant.h"
 #include "options/bv_options.h"
 #include "options/language.h"
 #include "options/printer_options.h"
 #include "smt_util/boolean_simplification.h"
 #include "theory/arrays/theory_arrays_rewriter.h"
 #include "theory/datatypes/sygus_datatype_utils.h"
+#include "theory/datatypes/tuple_project_op.h"
 #include "theory/quantifiers/quantifiers_attributes.h"
 #include "theory/theory_model.h"
+#include "util/bitvector.h"
+#include "util/divisible.h"
+#include "util/floatingpoint.h"
+#include "util/iand.h"
+#include "util/indexed_root_predicate.h"
+#include "util/regexp.h"
 #include "util/smt2_quote_string.h"
+#include "util/string.h"
 
 using namespace std;
 
@@ -201,11 +215,19 @@ void Smt2Printer::toStream(std::ostream& out,
     }
     case kind::CONST_ROUNDINGMODE:
       switch (n.getConst<RoundingMode>()) {
-        case ROUND_NEAREST_TIES_TO_EVEN: out << "roundNearestTiesToEven"; break;
-        case ROUND_NEAREST_TIES_TO_AWAY: out << "roundNearestTiesToAway"; break;
-        case ROUND_TOWARD_POSITIVE: out << "roundTowardPositive"; break;
-        case ROUND_TOWARD_NEGATIVE: out << "roundTowardNegative"; break;
-        case ROUND_TOWARD_ZERO: out << "roundTowardZero"; break;
+        case RoundingMode::ROUND_NEAREST_TIES_TO_EVEN:
+          out << "roundNearestTiesToEven";
+          break;
+        case RoundingMode::ROUND_NEAREST_TIES_TO_AWAY:
+          out << "roundNearestTiesToAway";
+          break;
+        case RoundingMode::ROUND_TOWARD_POSITIVE:
+          out << "roundTowardPositive";
+          break;
+        case RoundingMode::ROUND_TOWARD_NEGATIVE:
+          out << "roundTowardNegative";
+          break;
+        case RoundingMode::ROUND_TOWARD_ZERO: out << "roundTowardZero"; break;
         default:
           Unreachable() << "Invalid value of rounding mode constant ("
                         << n.getConst<RoundingMode>() << ")";
index 7a2e5293e5fcf4914ead392581981479d2f3e42d..96f5197e3280070388bf4989575fa7238584730a 100644 (file)
@@ -19,6 +19,7 @@
 #include "options/proof_options.h"
 #include "proof/proof_node.h"
 #include "smt/smt_statistics_registry.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index a15864ad39256b22a94bfeab314361aa8e2e8bd6..6a2430f8291f2986a9823733fa987cce6f67ff39 100644 (file)
@@ -18,6 +18,7 @@
 #include "options/smt_options.h"
 #include "prop/minisat/minisat.h"
 #include "theory/builtin/proof_checker.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace prop {
index 81c7af16b061d8c156c4d5f8343ee8d25231e422..56cb643dba7b0143141133239af0f6fe5cfc5fd3 100644 (file)
@@ -15,6 +15,7 @@
 
 #include "smt/abstract_values.h"
 
+#include "expr/ascription_type.h"
 #include "options/smt_options.h"
 
 namespace cvc5 {
index 62e18c3b2035187bdb6a639b7e67cf3516261057..89006d154d0a8a895ce409d2c00a1a10c248483e 100644 (file)
@@ -25,6 +25,7 @@
 #include "theory/builtin/proof_checker.h"
 #include "theory/rewriter.h"
 #include "theory/theory.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 using namespace cvc5::theory;
index 6377091f2d6bb4104562d3079b9dd00b790e08fe..b18b6ed43a8425f7ee3f36d51bff1ad85782ae35 100644 (file)
@@ -65,6 +65,7 @@
 #include "theory/smt_engine_subsolver.h"
 #include "theory/theory_engine.h"
 #include "util/random.h"
+#include "util/rational.h"
 #include "util/resource_manager.h"
 #include "util/sexpr.h"
 #include "util/statistics_registry.h"
index 4fe1180becc696141966b63fb255c5e8b9ce8f9b..ff9f7ef0376b9cd771dc9e50c8f57c8626c67aeb 100644 (file)
@@ -18,6 +18,7 @@
 #include "smt_util/nary_builder.h"
 
 #include "expr/metakind.h"
+#include "util/rational.h"
 
 using namespace std;
 
index ed7f541821bd5bff8206a38645d96b159dd01411..cd1014e3852aa72a8dd4233174bf1e4303dd0925 100644 (file)
 
 #include <unordered_map>
 
-#include "expr/node.h"
-#include "context/cdo.h"
 #include "context/cdinsert_hashmap.h"
+#include "context/cdo.h"
+#include "expr/node.h"
+#include "util/integer.h"
 
 namespace cvc5 {
 namespace preprocessing {
index 724f83e075d71afb0524bc1664e149cf201cdae8..3ca6492117551e9d98f7318dce1836f57495f1da 100644 (file)
@@ -16,6 +16,7 @@
 #include "theory/arith/arith_msum.h"
 
 #include "theory/rewriter.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index b8135127de4f38379db20ec2b06db0101a440baf..4d632e043ad9a7dc0e80c816e05bce1cf6521901 100644 (file)
@@ -16,6 +16,8 @@
  * \todo document this file
  */
 
+#include "theory/arith/arith_rewriter.h"
+
 #include <set>
 #include <sstream>
 #include <stack>
 
 #include "smt/logic_exception.h"
 #include "theory/arith/arith_msum.h"
-#include "theory/arith/arith_rewriter.h"
 #include "theory/arith/arith_utilities.h"
 #include "theory/arith/normal_form.h"
 #include "theory/arith/operator_elim.h"
 #include "theory/theory.h"
+#include "util/bitvector.h"
+#include "util/divisible.h"
 #include "util/iand.h"
 
 namespace cvc5 {
index e1eda5d85ac7be012d2ff7b9cdce4f1eb57ee1c1..396befb353d121b357fc4f6759bdf0f4d433f82b 100644 (file)
@@ -44,10 +44,11 @@ operator ARCCOTANGENT 1 "arc cotangent"
 operator SQRT 1 "square root"
 
 constant DIVISIBLE_OP \
-        ::cvc5::Divisible \
-        ::cvc5::DivisibleHashFunction \
-        "util/divisible.h" \
-        "operator for the divisibility-by-k predicate; payload is an instance of the cvc5::Divisible class"
+  struct \
+  Divisible \
+  ::cvc5::DivisibleHashFunction \
+  "util/divisible.h" \
+  "operator for the divisibility-by-k predicate; payload is an instance of the cvc5::Divisible class"
 
 sort REAL_TYPE \
     Cardinality::REALS \
@@ -63,7 +64,8 @@ sort INTEGER_TYPE \
     "integer type"
 
 constant CONST_RATIONAL \
-    ::cvc5::Rational \
+    class \
+    Rational \
     ::cvc5::RationalHashFunction \
     "util/rational.h" \
     "a multiple-precision rational constant; payload is an instance of the cvc5::Rational class"
@@ -82,10 +84,11 @@ operator GEQ 2 "greater than or equal, x >= y"
 
 # represents an indexed root predicate. See util/indexed_root_predicate.h for more documentation.
 constant INDEXED_ROOT_PREDICATE_OP \
-       ::cvc5::IndexedRootPredicate \
-       ::cvc5::IndexedRootPredicateHashFunction \
-       "util/indexed_root_predicate.h" \
-       "operator for the indexed root predicate; payload is an instance of the cvc5::IndexedRootPredicate class"
+  struct \
+  IndexedRootPredicate \
+  ::cvc5::IndexedRootPredicateHashFunction \
+  "util/indexed_root_predicate.h" \
+  "operator for the indexed root predicate; payload is an instance of the cvc5::IndexedRootPredicate class"
 parameterized INDEXED_ROOT_PREDICATE INDEXED_ROOT_PREDICATE_OP 2 "indexed root predicate; first parameter is a INDEXED_ROOT_PREDICATE_OP, second is a real variable compared to zero, third is a polynomial"
 
 operator IS_INTEGER 1 "term-is-integer predicate (parameter is a real-sorted term)"
@@ -157,10 +160,11 @@ typerule PI ::cvc5::theory::arith::RealNullaryOperatorTypeRule
 # (bv2int (bvand ((_ int2bv k) i1) ((_ int2bv k) i2)))
 # for all integers i1, i2.
 constant IAND_OP \
-       ::cvc5::IntAnd \
-       "::cvc5::UnsignedHashFunction< ::cvc5::IntAnd >" \
-       "util/iand.h" \
-       "operator for integer AND; payload is an instance of the cvc5::IntAnd class"
+  struct \
+  IntAnd \
+  "::cvc5::UnsignedHashFunction< ::cvc5::IntAnd >" \
+  "util/iand.h" \
+  "operator for integer AND; payload is an instance of the cvc5::IntAnd class"
 parameterized IAND IAND_OP 2 "integer version of AND operator; first parameter is an IAND_OP, second and third are integer terms"
 
 typerule IAND_OP ::cvc5::theory::arith::IAndOpTypeRule
index 374a7e4efb69c7bcf688391cbb22626f8caf45fb..a74913d997e73a9199f9a3c066f57237b44541c2 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "proof/lazy_tree_proof_generator.h"
 #include "theory/arith/nl/poly_conversion.h"
+#include "util/indexed_root_predicate.h"
 
 namespace cvc5 {
 namespace theory {
index c1937797ec72bbff01c88247ef386eb0f35e53b3..7db6c266f1e478b7fd3ed301b03963e0843f7381 100644 (file)
@@ -23,6 +23,7 @@
 #include "theory/arith/nl/ext/monomial.h"
 #include "theory/arith/nl/nl_lemma_utils.h"
 #include "theory/arith/nl/nl_model.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index d6b732eb9ddb75d80673f479845debf3cb2a49d4..4c79564e3b0b015e2340bcd7370ae2fc6b466f82 100644 (file)
@@ -23,6 +23,7 @@
 #include "theory/arith/nl/ext/ext_state.h"
 #include "theory/arith/nl/nl_model.h"
 #include "theory/rewriter.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index bf38bc8f01d07fcc994785b3507809daa1ecce36..330cd57a30c054c66679f8ef82d5d4f20e13cef3 100644 (file)
@@ -22,6 +22,7 @@
 #include "theory/arith/nl/ext/ext_state.h"
 #include "theory/arith/nl/nl_lemma_utils.h"
 #include "theory/arith/nl/nl_model.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index 9efa9c0f290df5fa220a06393430d1b774eb7fa6..d2a5e628a7b75f3e5a9efb4e8e37df66070763ee 100644 (file)
@@ -22,6 +22,7 @@
 #include "theory/arith/nl/ext/ext_state.h"
 #include "theory/arith/nl/nl_model.h"
 #include "theory/rewriter.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index cb2fdab6fad447594d84d9bbec19ae46fa4088a5..8200ff08eaaf24425778a3610932977eafbfba3c 100644 (file)
@@ -24,6 +24,7 @@
 #include "theory/arith/inference_manager.h"
 #include "theory/arith/nl/nl_model.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
 #include "util/iand.h"
 
 using namespace cvc5::kind;
index cc35a46757dad5bdbb3dd8e1ad8c99dc891f91ad..45881e1bb738c6e6a1ab61f4aa36f97744d0298a 100644 (file)
@@ -20,6 +20,7 @@
 #include "cvc5_private.h"
 #include "theory/arith/nl/nl_model.h"
 #include "theory/rewriter.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index ba4c7dcb53166106a9b6fa155c921df388843817..1ba501f90a3ab0235c8ddfad646237484116f600 100644 (file)
@@ -15,6 +15,8 @@
 
 #include "theory/arith/theory_arith_type_rules.h"
 
+#include "util/rational.h"
+
 namespace cvc5 {
 namespace theory {
 namespace arith {
index e39f30c6e29e9d5ffb442c448e5a90321cd5003d..67abc149da19b3c8fbde68d4fddc13ec9b29da68 100644 (file)
@@ -36,7 +36,8 @@ operator EQ_RANGE 4 "equality of two arrays over an index range lower/upper"
 
 # storeall t e  is  \all i in indexType(t) <= e
 constant STORE_ALL \
-    ::cvc5::ArrayStoreAll \
+    class \
+    ArrayStoreAll \
     ::cvc5::ArrayStoreAllHashFunction \
     "expr/array_store_all.h" \
     "array store-all; payload is an instance of the cvc5::ArrayStoreAll class (this is not supported by arrays decision procedure yet, but it is used for returned array models)"
index 0bdccfd17d315d3772ea7ef00caa065438e6f2f5..ea18b31806b27d904a4bb70c4eae2a066347080a 100644 (file)
@@ -18,6 +18,7 @@
 #include <map>
 #include <memory>
 
+#include "expr/array_store_all.h"
 #include "expr/kind.h"
 #include "expr/node_algorithm.h"
 #include "options/arrays_options.h"
index 8ad7a5f95e6047ea685c993638e99e2f30111669..1072ffaf4bb846ed08244c0e5f0f5f46293a2df9 100644 (file)
  * \todo document this file
  */
 
-#include "expr/attribute.h"
 #include "theory/arrays/theory_arrays_rewriter.h"
 
+#include "expr/array_store_all.h"
+#include "expr/attribute.h"
+#include "util/cardinality.h"
+
 namespace cvc5 {
 namespace theory {
 namespace arrays {
index 04a2f1a742da47eb48e4d711de5abbe88d45f3df..6d16e4020d41d5d9604129228e0fd464b7338f3a 100644 (file)
 #include "theory/arrays/theory_arrays_type_rules.h"
 
 // for array-constant attributes
+#include "expr/array_store_all.h"
 #include "theory/arrays/theory_arrays_rewriter.h"
 #include "theory/type_enumerator.h"
+#include "util/cardinality.h"
 
 namespace cvc5 {
 namespace theory {
index 181a42da4fb2c7fb98c8bc0ae2afadc3eab5cd31..6fc026b194db6d6c40043e90b3d1cc227dee631f 100644 (file)
 #ifndef CVC5__THEORY__ARRAYS__TYPE_ENUMERATOR_H
 #define CVC5__THEORY__ARRAYS__TYPE_ENUMERATOR_H
 
-#include "theory/type_enumerator.h"
-#include "expr/type_node.h"
+#include "expr/array_store_all.h"
 #include "expr/kind.h"
+#include "expr/type_node.h"
 #include "theory/rewriter.h"
+#include "theory/type_enumerator.h"
 
 namespace cvc5 {
 namespace theory {
index 47eb90f45f37654a3edd6e4a90b86fd4af1a1066..203903d88f2501870e4c6deb311647fa31b70bd3 100644 (file)
@@ -21,6 +21,7 @@
 #include "theory/bags/solver_state.h"
 #include "theory/bags/term_registry.h"
 #include "theory/uf/equality_engine_iterator.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::context;
index 3d1a94f22b359bd2a5cb5c113e55eb3ef702d584..b9f620d51af8e80397edb444046bfa633e5ea1a8 100644 (file)
@@ -15,7 +15,9 @@
 
 #include "theory/bags/bags_rewriter.h"
 
+#include "expr/emptybag.h"
 #include "theory/bags/normal_form.h"
+#include "util/rational.h"
 #include "util/statistics_registry.h"
 
 using namespace cvc5::kind;
index 6286f20b7cadef810f3e3f147cded88fbd045b13..556dc76d6e74cad53c2511b6dae27fee4ea8240a 100644 (file)
@@ -21,6 +21,7 @@
 #include "theory/bags/inference_manager.h"
 #include "theory/bags/solver_state.h"
 #include "theory/uf/equality_engine.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index 038e7dd7fa8f4c7ad62fa224cee0d4537f47efd4..79541023905027cf88a455060962b002ec76471b 100644 (file)
@@ -16,7 +16,8 @@ properties check presolve
 
 # constants
 constant EMPTYBAG \
-    ::cvc5::EmptyBag \
+    class \
+    EmptyBag \
     ::cvc5::EmptyBagHashFunction \
     "expr/emptybag.h" \
     "the empty bag constant; payload is an instance of the cvc5::EmptyBag class"
@@ -50,7 +51,8 @@ operator BAG_COUNT         2  "multiplicity of an element in a bag"
 operator DUPLICATE_REMOVAL 1  "eliminate duplicates in a bag (also known as the delta operator,or the squash operator)"
 
 constant MK_BAG_OP \
-       ::cvc5::MakeBagOp \
+  class \
+       MakeBagOp \
        ::cvc5::MakeBagOpHashFunction \
        "theory/bags/make_bag_op.h" \
        "operator for MK_BAG; payload is an instance of the cvc5::MakeBagOp class"
index 08142e6f99708ec8e1df1579f4aacabbbcded9d0..ec32d01381f878f8c097902585f191d9ac725da1 100644 (file)
  */
 #include "normal_form.h"
 
+#include "expr/emptybag.h"
 #include "theory/sets/normal_form.h"
 #include "theory/type_enumerator.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index 2db38e62bbaf1809514fb5bdd8899287f14259eb..659886e83d020df44d56bcd92bf9c2add38017af 100644 (file)
@@ -15,6 +15,7 @@
 
 #include "theory/bags/term_registry.h"
 
+#include "expr/emptyset.h"
 #include "theory/bags/inference_manager.h"
 #include "theory/bags/solver_state.h"
 
index 4695c1db71c9b1e935700579b56aa3a89c8620be..be9e0cd4da5457d32424bf7f67fdfa5d18ea6b8a 100644 (file)
@@ -18,6 +18,7 @@
 #include "expr/emptybag.h"
 #include "theory/rewriter.h"
 #include "theory_bags_type_enumerator.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index 133059cd066bfb3456bf3f8e94dd45f7c04c4590..d820ce6e1612595f0ac6fd50bc5d4a46172dbc23 100644 (file)
 #include <sstream>
 
 #include "base/check.h"
+#include "expr/emptybag.h"
+#include "theory/bags/make_bag_op.h"
 #include "theory/bags/normal_form.h"
+#include "util/cardinality.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
@@ -279,6 +283,11 @@ TypeNode ToSetTypeRule::computeType(NodeManager* nodeManager,
   return setType;
 }
 
+Cardinality BagsProperties::computeCardinality(TypeNode type)
+{
+  return Cardinality::INTEGERS;
+}
+
 bool BagsProperties::isWellFounded(TypeNode type)
 {
   return type[0].isWellFounded();
index a633d604f818ff4e07447191fa7d306f0ed48251..4874233094f38eb4eccea8dfab44c948d2cb8ae5 100644 (file)
@@ -125,10 +125,7 @@ struct ToSetTypeRule
 
 struct BagsProperties
 {
-  static Cardinality computeCardinality(TypeNode type)
-  {
-    return Cardinality::INTEGERS;
-  }
+  static Cardinality computeCardinality(TypeNode type);
 
   static bool isWellFounded(TypeNode type);
 
index 6560cdd1a7efcbb081ee26f7835b6e1fa29810e9..da5642057fd185a76f173b3161dc2a376a5953d2 100644 (file)
@@ -19,6 +19,7 @@ sort BOOLEAN_TYPE \
     "Boolean type"
 
 constant CONST_BOOLEAN \
+    skip \
     bool \
     ::cvc5::BoolHashFunction \
     "util/bool.h" \
index f7e788e9a8694d4d7218b3d40cfc8a112876c595..6c4e0f96b5f246c614d1998cd151d45cc19f9083 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "proof/proof_node.h"
 #include "proof/proof_node_manager.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index 44d337c286de88c3e65e7506c7edcb67fe1646f1..a5c63522d0052f971d64ad9d1da118135d0828e0 100644 (file)
  * \todo document this file
  */
 
+#include "theory/booleans/theory_bool_rewriter.h"
+
 #include <algorithm>
 #include <unordered_set>
 
 #include "expr/node_value.h"
-#include "theory/booleans/theory_bool_rewriter.h"
+#include "util/cardinality.h"
 
 namespace cvc5 {
 namespace theory {
index dffe0baf38c0308840aaafa471b71dfd0d8b2dd5..d4a8782b522861e64d3c7b53bb4bfde2863b76c6 100644 (file)
 #     For consistency these should start with "APPLY_", but this is
 #     not enforced.
 #
-#   constant K T Hasher header ["comment"]
+#   constant K T Hasher header ["comment"]
 #
-#     Declares a constant kind K.  T is the C++ type representing the
-#     constant internally (and it should be
-#     ::fully::qualified::like::this), and header is the header needed
-#     to define it.  Hasher is a hash functor type defined like this:
+#     Declares a constant kind K.  F is the type of the forward declaration to
+#     generate (e.g., `class`, `struct`). If F is `skip` then then no forward
+#     declaration is generated.  T is the C++ type representing the constant
+#     internally (the type is expected to be in the cvc5 namespace), and header
+#     is the header needed to define it.  Hasher is a hash functor type defined
+#     like this:
 #
 #       struct MyHashFcn {
 #         size_t operator()(const T& val) const;
@@ -263,7 +265,8 @@ well-founded SORT_TYPE \
     "::cvc5::theory::builtin::SortProperties::mkGroundTerm(%TYPE%)"
 
 constant UNINTERPRETED_CONSTANT \
-    ::cvc5::UninterpretedConstant \
+    class \
+    UninterpretedConstant \
     ::cvc5::UninterpretedConstantHashFunction \
     "expr/uninterpreted_constant.h" \
     "the kind of expressions representing uninterpreted constants; payload is an instance of the cvc5::UninterpretedConstant class (used in models)"
@@ -273,7 +276,8 @@ enumerator SORT_TYPE \
     "theory/builtin/type_enumerator.h"
 
 constant ABSTRACT_VALUE \
-    ::cvc5::AbstractValue \
+    class \
+    AbstractValue \
     ::cvc5::AbstractValueHashFunction \
     "util/abstract_value.h" \
     "the kind of expressions representing abstract values (other than uninterpreted sort constants); payload is an instance of the cvc5::AbstractValue class (used in models)"
@@ -284,7 +288,8 @@ typerule ABSTRACT_VALUE ::cvc5::theory::builtin::AbstractValueTypeRule
 # not stored that way.  If you ask for the operator of (EQUAL a b),
 # you'll get a special, singleton (BUILTIN EQUAL) Node.
 constant BUILTIN \
-    ::cvc5::Kind \
+    skip \
+    Kind \
     ::cvc5::kind::KindHashFunction \
     "expr/kind.h" \
     "the kind of expressions representing built-in operators"
@@ -301,7 +306,8 @@ operator LAMBDA 2 "a lambda expression; first parameter is a BOUND_VAR_LIST, sec
 operator WITNESS 2 "a witness expression; first parameter is a BOUND_VAR_LIST, second is the witness body"
 
 constant TYPE_CONSTANT \
-    ::cvc5::TypeConstant \
+    skip \
+    TypeConstant \
     ::cvc5::TypeConstantHashFunction \
     "expr/kind.h" \
     "a representation for basic types"
index 68d6e1ad1cb5b365ca46bf378d705d92e3a3a453..0ee72fc5f22df880ca7828a4429cae8bf8e43b33 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "theory/builtin/theory_builtin_rewriter.h"
 
+#include "expr/array_store_all.h"
 #include "expr/attribute.h"
 #include "expr/node_algorithm.h"
 #include "theory/rewriter.h"
index a448b2b69d1eb82faa4b792ebf2f52a5b388941c..f3c595720a92ccf88ba94f6901a742bcbd58444a 100644 (file)
 
 #include "expr/attribute.h"
 #include "expr/skolem_manager.h"
+#include "expr/uninterpreted_constant.h"
+#include "util/cardinality.h"
 
 namespace cvc5 {
 namespace theory {
 namespace builtin {
 
+TypeNode UninterpretedConstantTypeRule::computeType(NodeManager* nodeManager,
+                                                    TNode n,
+                                                    bool check)
+{
+  return n.getConst<UninterpretedConstant>().getType();
+}
+
 /**
  * Attribute for caching the ground term for each type. Maps TypeNode to the
  * skolem to return for mkGroundTerm.
@@ -46,6 +55,25 @@ Node SortProperties::mkGroundTerm(TypeNode type)
   return k;
 }
 
+Cardinality FunctionProperties::computeCardinality(TypeNode type)
+{
+  // Don't assert this; allow other theories to use this cardinality
+  // computation.
+  //
+  // Assert(type.getKind() == kind::FUNCTION_TYPE);
+
+  Cardinality argsCard(1);
+  // get the largest cardinality of function arguments/return type
+  for (size_t i = 0, i_end = type.getNumChildren() - 1; i < i_end; ++i)
+  {
+    argsCard *= type[i].getCardinality();
+  }
+
+  Cardinality valueCard = type[type.getNumChildren() - 1].getCardinality();
+
+  return valueCard ^ argsCard;
+}
+
 }  // namespace builtin
 }  // namespace theory
 }  // namespace cvc5
index 87ba12ed1758862d9c1d869658b5fb8e08567b29..00649a5afb1d00aadea0ad1693890ba74c6a9fe9 100644 (file)
@@ -93,9 +93,7 @@ class SExprTypeRule {
 
 class UninterpretedConstantTypeRule {
  public:
-  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check) {
-    return n.getConst<UninterpretedConstant>().getType();
-  }
+  static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check);
 };/* class UninterpretedConstantTypeRule */
 
 class AbstractValueTypeRule {
@@ -202,22 +200,8 @@ class SortProperties {
 
 class FunctionProperties {
  public:
-  inline static Cardinality computeCardinality(TypeNode type) {
-    // Don't assert this; allow other theories to use this cardinality
-    // computation.
-    //
-    // Assert(type.getKind() == kind::FUNCTION_TYPE);
-
-    Cardinality argsCard(1);
-    // get the largest cardinality of function arguments/return type
-    for(unsigned i = 0, i_end = type.getNumChildren() - 1; i < i_end; ++i) {
-      argsCard *= type[i].getCardinality();
-    }
+  static Cardinality computeCardinality(TypeNode type);
 
-    Cardinality valueCard = type[type.getNumChildren() - 1].getCardinality();
-
-    return valueCard ^ argsCard;
-  }
   /** Function type is well-founded if its component sorts are */
   static bool isWellFounded(TypeNode type)
   {
index e6080ed4fef1384f45f3637e0344faeef71f2567..37758ad4ad524dbc4877fa8e7f1baf3691ea0551 100644 (file)
@@ -24,6 +24,7 @@
 #include "smt/smt_statistics_registry.h"
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
 
 using namespace cvc5;
 using namespace cvc5::theory;
index f5259dc93a6bbe3d31da4e77ae67076df14c143e..f71f82ce18c1d86c18bda8afd687d9dbc4fe01b7 100644 (file)
@@ -25,6 +25,7 @@
 #include "theory/bv/bitblast/bitblast_utils.h"
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
 
 namespace cvc5 {
 
index 32b6dbd7ad150871072671f61ca2af7b2217ddeb..ba545e48b7d37c6b7ebab484002cc34023d39f6f 100644 (file)
@@ -27,6 +27,7 @@
 #include "context/cdo.h"
 #include "context/cdqueue.h"
 #include "context/context.h"
+#include "util/bitvector.h"
 
 namespace cvc5 {
 namespace theory {
index 3a9e460fe42e01373c19d3304694ea7473cc06e8..65c1ec79cd3d520a9f3ff2ea83e24b47f6700a75 100644 (file)
@@ -29,6 +29,7 @@
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/rewriter.h"
 #include "theory/theory_model.h"
+#include "util/bitvector.h"
 
 using namespace cvc5::context;
 using namespace cvc5::prop;
index 7c97d1bbcc79bf27d316eaf394bbd600594ac9bf..2589418cc9b8cd32f4ea2c129ec274865d07a350 100644 (file)
@@ -23,6 +23,7 @@
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/ext_theory.h"
 #include "theory/theory_model.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5;
index 6af58673515dda7936e3fb6c2588ab5631b16549..9590d5522bd46fc5473ad92868e56d2bd4e7b21c 100644 (file)
@@ -13,19 +13,21 @@ properties check propagate presolve ppStaticLearn
 rewriter ::cvc5::theory::bv::TheoryBVRewriter "theory/bv/theory_bv_rewriter.h"
 
 constant BITVECTOR_TYPE \
-       ::cvc5::BitVectorSize \
-       "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorSize >" \
-       "util/bitvector.h" \
-       "bit-vector type"
+  struct \
+  BitVectorSize \
+  "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorSize >" \
+  "util/bitvector.h" \
+  "bit-vector type"
 cardinality BITVECTOR_TYPE \
        "::cvc5::theory::bv::CardinalityComputer::computeCardinality(%TYPE%)" \
        "theory/bv/theory_bv_type_rules.h"
 
 constant CONST_BITVECTOR \
-    ::cvc5::BitVector \
-    ::cvc5::BitVectorHashFunction \
-    "util/bitvector.h" \
-    "a fixed-width bit-vector constant; payload is an instance of the cvc5::BitVector class"
+  class \
+  BitVector \
+  ::cvc5::BitVectorHashFunction \
+  "util/bitvector.h" \
+  "a fixed-width bit-vector constant; payload is an instance of the cvc5::BitVector class"
 
 enumerator BITVECTOR_TYPE \
     "::cvc5::theory::bv::BitVectorEnumerator" \
@@ -101,59 +103,67 @@ operator BITVECTOR_EAGER_ATOM 1 "formula to be treated as a bv atom via eager bi
 ### parameterized operator kinds ----------------------------------------------
 
 constant BITVECTOR_BITOF_OP \
-       ::cvc5::BitVectorBitOf \
-       ::cvc5::BitVectorBitOfHashFunction \
-       "util/bitvector.h" \
-       "operator for the bit-vector boolean bit extract; payload is an instance of the cvc5::BitVectorBitOf class"
+  struct \
+  BitVectorBitOf \
+  ::cvc5::BitVectorBitOfHashFunction \
+  "util/bitvector.h" \
+  "operator for the bit-vector boolean bit extract; payload is an instance of the cvc5::BitVectorBitOf class"
 parameterized BITVECTOR_BITOF BITVECTOR_BITOF_OP 1 "bit-vector boolean bit extract; first parameter is a BITVECTOR_BITOF_OP, second is a bit-vector term"
 
 constant BITVECTOR_EXTRACT_OP \
-       ::cvc5::BitVectorExtract \
-       ::cvc5::BitVectorExtractHashFunction \
-       "util/bitvector.h" \
-       "operator for the bit-vector extract; payload is an instance of the cvc5::BitVectorExtract class"
+  struct \
+  BitVectorExtract \
+  ::cvc5::BitVectorExtractHashFunction \
+  "util/bitvector.h" \
+  "operator for the bit-vector extract; payload is an instance of the cvc5::BitVectorExtract class"
 parameterized BITVECTOR_EXTRACT BITVECTOR_EXTRACT_OP 1 "bit-vector extract; first parameter is a BITVECTOR_EXTRACT_OP, second is a bit-vector term"
 
 constant BITVECTOR_REPEAT_OP \
-       ::cvc5::BitVectorRepeat \
-       "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorRepeat >" \
-       "util/bitvector.h" \
-       "operator for the bit-vector repeat; payload is an instance of the cvc5::BitVectorRepeat class"
+  struct \
+  BitVectorRepeat \
+  "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorRepeat >" \
+  "util/bitvector.h" \
+  "operator for the bit-vector repeat; payload is an instance of the cvc5::BitVectorRepeat class"
 parameterized BITVECTOR_REPEAT BITVECTOR_REPEAT_OP 1 "bit-vector repeat; first parameter is a BITVECTOR_REPEAT_OP, second is a bit-vector term"
 
 constant BITVECTOR_ROTATE_LEFT_OP \
-       ::cvc5::BitVectorRotateLeft \
-       "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorRotateLeft >" \
-       "util/bitvector.h" \
-       "operator for the bit-vector rotate left; payload is an instance of the cvc5::BitVectorRotateLeft class"
+  struct \
+  BitVectorRotateLeft \
+  "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorRotateLeft >" \
+  "util/bitvector.h" \
+  "operator for the bit-vector rotate left; payload is an instance of the cvc5::BitVectorRotateLeft class"
 parameterized BITVECTOR_ROTATE_LEFT BITVECTOR_ROTATE_LEFT_OP 1 "bit-vector rotate left; first parameter is a BITVECTOR_ROTATE_LEFT_OP, second is a bit-vector term"
 
 constant BITVECTOR_ROTATE_RIGHT_OP \
-       ::cvc5::BitVectorRotateRight \
-       "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorRotateRight >" \
-       "util/bitvector.h" \
-       "operator for the bit-vector rotate right; payload is an instance of the cvc5::BitVectorRotateRight class"
+  struct \
+  BitVectorRotateRight \
+  "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorRotateRight >" \
+  "util/bitvector.h" \
+  "operator for the bit-vector rotate right; payload is an instance of the cvc5::BitVectorRotateRight class"
 parameterized BITVECTOR_ROTATE_RIGHT BITVECTOR_ROTATE_RIGHT_OP 1 "bit-vector rotate right; first parameter is a BITVECTOR_ROTATE_RIGHT_OP, second is a bit-vector term"
 
 constant BITVECTOR_SIGN_EXTEND_OP \
-       ::cvc5::BitVectorSignExtend \
-       "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorSignExtend >" \
-       "util/bitvector.h" \
-       "operator for the bit-vector sign-extend; payload is an instance of the cvc5::BitVectorSignExtend class"
+  struct \
+  BitVectorSignExtend \
+  "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorSignExtend >" \
+  "util/bitvector.h" \
+  "operator for the bit-vector sign-extend; payload is an instance of the cvc5::BitVectorSignExtend class"
 parameterized BITVECTOR_SIGN_EXTEND BITVECTOR_SIGN_EXTEND_OP 1 "bit-vector sign-extend; first parameter is a BITVECTOR_SIGN_EXTEND_OP, second is a bit-vector term"
 
 constant BITVECTOR_ZERO_EXTEND_OP \
-       ::cvc5::BitVectorZeroExtend \
-       "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorZeroExtend >" \
-       "util/bitvector.h" \
-       "operator for the bit-vector zero-extend; payload is an instance of the cvc5::BitVectorZeroExtend class"
+  struct \
+  BitVectorZeroExtend \
+  "::cvc5::UnsignedHashFunction< ::cvc5::BitVectorZeroExtend >" \
+  "util/bitvector.h" \
+  "operator for the bit-vector zero-extend; payload is an instance of the cvc5::BitVectorZeroExtend class"
 parameterized BITVECTOR_ZERO_EXTEND BITVECTOR_ZERO_EXTEND_OP 1 "bit-vector zero-extend; first parameter is a BITVECTOR_ZERO_EXTEND_OP, second is a bit-vector term"
 
 constant INT_TO_BITVECTOR_OP \
-       ::cvc5::IntToBitVector \
-       "::cvc5::UnsignedHashFunction< ::cvc5::IntToBitVector >" \
-       "util/bitvector.h" \
-       "operator for the integer conversion to bit-vector; payload is an instance of the cvc5::IntToBitVector class"
+  struct \
+  IntToBitVector \
+  "::cvc5::UnsignedHashFunction< ::cvc5::IntToBitVector >" \
+  "util/bitvector.h" \
+  "operator for the integer conversion to bit-vector; payload is an instance of the cvc5::IntToBitVector class"
 parameterized INT_TO_BITVECTOR INT_TO_BITVECTOR_OP 1 "integer conversion to bit-vector; first parameter is an INT_TO_BITVECTOR_OP, second is an integer term"
 
 ### type rules for non-parameterized operator kinds ---------------------------
index af80ad00bfe057d466a4f63658b7db7cd99adce8..761f4efb26e76e5a25278b31c4a4b01a29ca5ee9 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "theory/bv/theory_bv_rewrite_rules.h"
 #include "theory/bv/theory_bv_utils.h"
+#include "util/bitvector.h"
 
 namespace cvc5 {
 namespace theory {
index 45e313e481004b41b7d0d7fa8fbbc6973cacd791..5ead8a215bafac18ef1ac3a5b5c0349ee2eae84e 100644 (file)
@@ -27,6 +27,7 @@
 #include "theory/bv/theory_bv_rewrite_rules.h"
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
 
 namespace cvc5 {
 namespace theory {
index e44d1c9b723aa0898bfe103eb1b07a946cc61b76..496a625ee9e0c6008135b52fd75311ee9aa2d3b6 100644 (file)
@@ -23,6 +23,7 @@
 #include "options/bv_options.h"
 #include "theory/bv/theory_bv_rewrite_rules.h"
 #include "theory/bv/theory_bv_utils.h"
+#include "util/bitvector.h"
 
 namespace cvc5 {
 namespace theory {
index 1e38aba0fbc255338d563c8904e85ae4cbfab7fc..6d2ed4477b2d8bcfc5a2c8d78730b28afdb85a2d 100644 (file)
@@ -24,6 +24,7 @@
 #include "theory/bv/theory_bv_rewrite_rules.h"
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
 
 namespace cvc5 {
 namespace theory {
index 304a2b9cf787d972d8a1a3d43b41568da16fd1fc..707b5f8bbe55bdb97977c9d3f7623c21da321e50 100644 (file)
@@ -18,6 +18,8 @@
 #include <algorithm>
 
 #include "expr/type_node.h"
+#include "util/bitvector.h"
+#include "util/cardinality.h"
 #include "util/integer.h"
 
 namespace cvc5 {
index 927a40b824dc86535750773c70ce39fbdb105a98..bc6096cbb153925951f0d3218b025ac110f969eb 100644 (file)
@@ -20,6 +20,8 @@
 #include "expr/skolem_manager.h"
 #include "options/theory_options.h"
 #include "theory/theory.h"
+#include "util/bitvector.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index fca449917c3ce4e141b448177638d3bfcb33274d..712f5b822561c22d4b292fcbf7387270570b84f0 100644 (file)
@@ -23,6 +23,7 @@
 #include <vector>
 
 #include "expr/node_manager.h"
+#include "util/integer.h"
 
 namespace cvc5 {
 namespace theory {
index 744160c8bca2cea3603ccacd61322103f5a983bd..e0e2f7ac8962975086d7f23161131c852b537cda 100644 (file)
 
 #include "theory/datatypes/datatypes_rewriter.h"
 
+#include "expr/ascription_type.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
 #include "expr/node_algorithm.h"
 #include "expr/skolem_manager.h"
 #include "expr/sygus_datatype.h"
+#include "expr/uninterpreted_constant.h"
 #include "options/datatypes_options.h"
 #include "theory/datatypes/sygus_datatype_utils.h"
 #include "theory/datatypes/theory_datatypes_utils.h"
+#include "theory/datatypes/tuple_project_op.h"
+#include "util/rational.h"
 
 using namespace cvc5;
 using namespace cvc5::kind;
index 19f396a565e04171f710b8cde4131ef617fbcca7..a4323a1d0317820593a41cf2000014ce6a8801fe 100644 (file)
@@ -20,6 +20,7 @@
 #include "theory/datatypes/theory_datatypes_utils.h"
 #include "theory/model_manager.h"
 #include "theory/rewriter.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index 1b7808a8b0ed5d298f5386406928ac3287690fe9..41d5ded7695c933957eddba8d18e81842a963bc6 100644 (file)
@@ -48,10 +48,11 @@ parameterized APPLY_TESTER TESTER_TYPE 1 "tester application; first parameter is
 parameterized APPLY_UPDATER UPDATER_TYPE 2 "datatype updater application; first parameter is an update, second is a datatype term to update, third is the value to update with"
 
 constant DATATYPE_TYPE \
-    ::cvc5::DatatypeIndexConstant \
-    "::cvc5::DatatypeIndexConstantHashFunction" \
-    "expr/datatype_index.h" \
-    "a datatype type index"
+  class \
+  DatatypeIndexConstant \
+  "::cvc5::DatatypeIndexConstantHashFunction" \
+  "expr/datatype_index.h" \
+  "a datatype type index"
 cardinality DATATYPE_TYPE \
     "%TYPE%.getDType().getCardinality(%TYPE%)" \
     "expr/dtype.h"
@@ -80,10 +81,11 @@ enumerator PARAMETRIC_DATATYPE \
 parameterized APPLY_TYPE_ASCRIPTION ASCRIPTION_TYPE 1 \
     "type ascription, for datatype constructor applications; first parameter is an ASCRIPTION_TYPE, second is the datatype constructor application being ascribed"
 constant ASCRIPTION_TYPE \
-    ::cvc5::AscriptionType \
-    ::cvc5::AscriptionTypeHashFunction \
-    "expr/ascription_type.h" \
-    "a type parameter for type ascription; payload is an instance of the cvc5::AscriptionType class"
+  class \
+  AscriptionType \
+  ::cvc5::AscriptionTypeHashFunction \
+  "expr/ascription_type.h" \
+  "a type parameter for type ascription; payload is an instance of the cvc5::AscriptionType class"
 
 typerule APPLY_CONSTRUCTOR ::cvc5::theory::datatypes::DatatypeConstructorTypeRule
 typerule APPLY_SELECTOR ::cvc5::theory::datatypes::DatatypeSelectorTypeRule
@@ -131,10 +133,11 @@ typerule MATCH_BIND_CASE ::cvc5::theory::datatypes::MatchBindCaseTypeRule
 
 
 constant TUPLE_PROJECT_OP \
-       ::cvc5::TupleProjectOp \
-       ::cvc5::TupleProjectOpHashFunction \
-       "theory/datatypes/tuple_project_op.h" \
-       "operator for TUPLE_PROJECT; payload is an instance of the cvc5::TupleProjectOp class"
+  class \
+  TupleProjectOp \
+  ::cvc5::TupleProjectOpHashFunction \
+  "theory/datatypes/tuple_project_op.h" \
+  "operator for TUPLE_PROJECT; payload is an instance of the cvc5::TupleProjectOp class"
 
 parameterized TUPLE_PROJECT TUPLE_PROJECT_OP 1 \
     "projects a tuple from an existing tuple using indices passed in TupleProjectOp"
index df644e9b2bc8d19cca60b97a75c1aca811288222..6cb1f44e10416fb91f3af302f24221841dba68aa 100644 (file)
 
 #include <sstream>
 
+#include "expr/ascription_type.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
 #include "expr/type_matcher.h"
 #include "theory/datatypes/theory_datatypes_utils.h"
+#include "theory/datatypes/tuple_project_op.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace theory {
index bf74347d0af1ab3846232d06a831f90b1959933a..582f11c72ee790958d2254ffd2fd19d5c47a7af4 100644 (file)
@@ -15,6 +15,7 @@
 
 #include "theory/datatypes/theory_datatypes_utils.h"
 
+#include "expr/ascription_type.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
 
index 6cb2fdce9e2400603c3cfff6ab90c599bcf54e6c..39b48ece995936aada48f2d8525ed9b46ce17f4f 100644 (file)
  * Enumerators for datatypes.
  */
 
-#include "expr/dtype_cons.h"
 #include "theory/datatypes/type_enumerator.h"
+
+#include "expr/ascription_type.h"
+#include "expr/dtype_cons.h"
 #include "theory/datatypes/datatypes_rewriter.h"
 #include "theory/datatypes/theory_datatypes_utils.h"
 
index 759c50db0e0b966468f4822dde62f51e68200c08..9ea121be43e4687587891618b8c11fa47762f06b 100644 (file)
@@ -21,6 +21,7 @@
 #include "expr/dtype.h"
 #include "expr/kind.h"
 #include "expr/type_node.h"
+#include "expr/uninterpreted_constant.h"
 #include "options/quantifiers_options.h"
 #include "theory/type_enumerator.h"
 
index 3a058772cb5c465eeb1d7f179ab8fe4521be2f69..c767014cb3df16420609719609c8e1db0061e5bb 100644 (file)
@@ -800,17 +800,19 @@ Node FpConverter::rmToNode(const rm &r) const
   Node value = nm->mkNode(
       kind::ITE,
       nm->mkNode(kind::EQUAL, transVar, RNE),
-      nm->mkConst(ROUND_NEAREST_TIES_TO_EVEN),
-      nm->mkNode(kind::ITE,
-                 nm->mkNode(kind::EQUAL, transVar, RNA),
-                 nm->mkConst(ROUND_NEAREST_TIES_TO_AWAY),
-                 nm->mkNode(kind::ITE,
-                            nm->mkNode(kind::EQUAL, transVar, RTP),
-                            nm->mkConst(ROUND_TOWARD_POSITIVE),
-                            nm->mkNode(kind::ITE,
-                                       nm->mkNode(kind::EQUAL, transVar, RTN),
-                                       nm->mkConst(ROUND_TOWARD_NEGATIVE),
-                                       nm->mkConst(ROUND_TOWARD_ZERO)))));
+      nm->mkConst(RoundingMode::ROUND_NEAREST_TIES_TO_EVEN),
+      nm->mkNode(
+          kind::ITE,
+          nm->mkNode(kind::EQUAL, transVar, RNA),
+          nm->mkConst(RoundingMode::ROUND_NEAREST_TIES_TO_AWAY),
+          nm->mkNode(
+              kind::ITE,
+              nm->mkNode(kind::EQUAL, transVar, RTP),
+              nm->mkConst(RoundingMode::ROUND_TOWARD_POSITIVE),
+              nm->mkNode(kind::ITE,
+                         nm->mkNode(kind::EQUAL, transVar, RTN),
+                         nm->mkConst(RoundingMode::ROUND_TOWARD_NEGATIVE),
+                         nm->mkConst(RoundingMode::ROUND_TOWARD_ZERO)))));
   return value;
 }
 
@@ -878,19 +880,19 @@ Node FpConverter::convert(TNode node)
             /******** Constants ********/
             switch (current.getConst<RoundingMode>())
             {
-              case ROUND_NEAREST_TIES_TO_EVEN:
+              case RoundingMode::ROUND_NEAREST_TIES_TO_EVEN:
                 d_rmMap.insert(current, traits::RNE());
                 break;
-              case ROUND_NEAREST_TIES_TO_AWAY:
+              case RoundingMode::ROUND_NEAREST_TIES_TO_AWAY:
                 d_rmMap.insert(current, traits::RNA());
                 break;
-              case ROUND_TOWARD_POSITIVE:
+              case RoundingMode::ROUND_TOWARD_POSITIVE:
                 d_rmMap.insert(current, traits::RTP());
                 break;
-              case ROUND_TOWARD_NEGATIVE:
+              case RoundingMode::ROUND_TOWARD_NEGATIVE:
                 d_rmMap.insert(current, traits::RTN());
                 break;
-              case ROUND_TOWARD_ZERO:
+              case RoundingMode::ROUND_TOWARD_ZERO:
                 d_rmMap.insert(current, traits::RTZ());
                 break;
               default: Unreachable() << "Unknown rounding mode"; break;
index dac0d51362a5bdd7bbee7ad83ac2d34f32ef1905..11bb05c706bfcb3b79ac4e6c4220d1d7a670a93c 100644 (file)
@@ -16,6 +16,7 @@
 #include "theory/fp/fp_expand_defs.h"
 
 #include "expr/skolem_manager.h"
+#include "util/floatingpoint.h"
 
 namespace cvc5 {
 namespace theory {
index d67738a63979a6e78e297babd648b5fc25aa650f..c07e54463697b3fe493faeae7b8d651d33e0caaa 100644 (file)
@@ -14,7 +14,8 @@ properties check
 
 # constants...
 constant CONST_FLOATINGPOINT \
-    ::cvc5::FloatingPoint \
+    class \
+    FloatingPoint \
     ::cvc5::FloatingPointHashFunction \
     "util/floatingpoint.h" \
     "a floating-point literal"
@@ -22,9 +23,10 @@ typerule CONST_FLOATINGPOINT    ::cvc5::theory::fp::FloatingPointConstantTypeRul
 
 
 constant CONST_ROUNDINGMODE \
-    ::cvc5::RoundingMode \
+    "enum class" \
+    RoundingMode \
     ::cvc5::RoundingModeHashFunction \
-    "util/floatingpoint.h" \
+    "util/roundingmode.h" \
     "a floating-point rounding mode"    
 typerule CONST_ROUNDINGMODE    ::cvc5::theory::fp::RoundingModeConstantTypeRule
 
@@ -45,7 +47,8 @@ enumerator ROUNDINGMODE_TYPE \
 
 
 constant FLOATINGPOINT_TYPE \
-    ::cvc5::FloatingPointSize \
+    class \
+    FloatingPointSize \
     ::cvc5::FloatingPointSizeHashFunction \
     "util/floatingpoint.h" \
     "floating-point type"
@@ -155,7 +158,8 @@ typerule FLOATINGPOINT_ISPOS   ::cvc5::theory::fp::FloatingPointTestTypeRule
 
 
 constant FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP \
-    ::cvc5::FloatingPointToFPIEEEBitVector \
+    class \
+    FloatingPointToFPIEEEBitVector \
     "::cvc5::FloatingPointConvertSortHashFunction<0x1>" \
     "util/floatingpoint.h" \
     "operator for to_fp from bit vector"
@@ -167,7 +171,8 @@ typerule FLOATINGPOINT_TO_FP_IEEE_BITVECTOR   ::cvc5::theory::fp::FloatingPointT
 
 
 constant FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP \
-    ::cvc5::FloatingPointToFPFloatingPoint \
+    class \
+    FloatingPointToFPFloatingPoint \
     "::cvc5::FloatingPointConvertSortHashFunction<0x2>" \
     "util/floatingpoint.h" \
     "operator for to_fp from floating point"
@@ -180,7 +185,8 @@ typerule FLOATINGPOINT_TO_FP_FLOATINGPOINT   ::cvc5::theory::fp::FloatingPointTo
 
 
 constant FLOATINGPOINT_TO_FP_REAL_OP \
-    ::cvc5::FloatingPointToFPReal \
+    class \
+    FloatingPointToFPReal \
     "::cvc5::FloatingPointConvertSortHashFunction<0x4>" \
     "util/floatingpoint.h" \
     "operator for to_fp from real"
@@ -192,7 +198,8 @@ typerule FLOATINGPOINT_TO_FP_REAL   ::cvc5::theory::fp::FloatingPointToFPRealTyp
 
 
 constant FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP \
-    ::cvc5::FloatingPointToFPSignedBitVector \
+    class \
+    FloatingPointToFPSignedBitVector \
     "::cvc5::FloatingPointConvertSortHashFunction<0x8>" \
     "util/floatingpoint.h" \
     "operator for to_fp from signed bit vector"
@@ -204,7 +211,8 @@ typerule FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR   ::cvc5::theory::fp::FloatingPoin
 
 
 constant FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP \
-    ::cvc5::FloatingPointToFPUnsignedBitVector \
+    class \
+    FloatingPointToFPUnsignedBitVector \
     "::cvc5::FloatingPointConvertSortHashFunction<0x10>" \
     "util/floatingpoint.h" \
     "operator for to_fp from unsigned bit vector"
@@ -217,7 +225,8 @@ typerule FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR   ::cvc5::theory::fp::FloatingPo
 
 
 constant FLOATINGPOINT_TO_FP_GENERIC_OP \
-    ::cvc5::FloatingPointToFPGeneric \
+    class \
+    FloatingPointToFPGeneric \
     "::cvc5::FloatingPointConvertSortHashFunction<0x11>" \
     "util/floatingpoint.h" \
     "operator for a generic to_fp"
@@ -232,7 +241,8 @@ typerule FLOATINGPOINT_TO_FP_GENERIC   ::cvc5::theory::fp::FloatingPointToFPGene
 
 
 constant FLOATINGPOINT_TO_UBV_OP \
-    ::cvc5::FloatingPointToUBV \
+    class \
+    FloatingPointToUBV \
     "::cvc5::FloatingPointToBVHashFunction<0x1>" \
     "util/floatingpoint.h" \
     "operator for to_ubv"
@@ -243,7 +253,8 @@ typerule FLOATINGPOINT_TO_UBV   ::cvc5::theory::fp::FloatingPointToUBVTypeRule
 
 
 constant FLOATINGPOINT_TO_UBV_TOTAL_OP \
-    ::cvc5::FloatingPointToUBVTotal \
+    class \
+    FloatingPointToUBVTotal \
     "::cvc5::FloatingPointToBVHashFunction<0x4>" \
     "util/floatingpoint.h" \
     "operator for to_ubv_total"
@@ -255,7 +266,8 @@ typerule FLOATINGPOINT_TO_UBV_TOTAL   ::cvc5::theory::fp::FloatingPointToUBVTota
 
 
 constant FLOATINGPOINT_TO_SBV_OP \
-    ::cvc5::FloatingPointToSBV \
+    class \
+    FloatingPointToSBV \
     "::cvc5::FloatingPointToBVHashFunction<0x2>" \
     "util/floatingpoint.h" \
     "operator for to_sbv"
@@ -266,7 +278,8 @@ typerule FLOATINGPOINT_TO_SBV   ::cvc5::theory::fp::FloatingPointToSBVTypeRule
 
 
 constant FLOATINGPOINT_TO_SBV_TOTAL_OP \
-    ::cvc5::FloatingPointToSBVTotal \
+    class \
+    FloatingPointToSBVTotal \
     "::cvc5::FloatingPointToBVHashFunction<0x8>" \
     "util/floatingpoint.h" \
     "operator for to_sbv_total"
index ecb8ba2b4005871ec686c4e37f8a741fdc3430ca..a48f62c6d71a0a47ef970c49a24d1dedf6288f17 100644 (file)
@@ -29,6 +29,7 @@
 #include "theory/output_channel.h"
 #include "theory/rewriter.h"
 #include "theory/theory_model.h"
+#include "util/floatingpoint.h"
 
 using namespace std;
 
@@ -362,7 +363,7 @@ bool TheoryFp::refineAbstraction(TheoryModel *m, TNode abstract, TNode concrete)
           nm->mkNode(kind::FLOATINGPOINT_TO_FP_REAL,
                      nm->mkConst(FloatingPointToFPReal(
                          concrete[0].getType().getConst<FloatingPointSize>())),
-                     nm->mkConst(ROUND_TOWARD_POSITIVE),
+                     nm->mkConst(RoundingMode::ROUND_TOWARD_POSITIVE),
                      abstractValue));
 
       Node bg = nm->mkNode(
@@ -379,7 +380,7 @@ bool TheoryFp::refineAbstraction(TheoryModel *m, TNode abstract, TNode concrete)
           nm->mkNode(kind::FLOATINGPOINT_TO_FP_REAL,
                      nm->mkConst(FloatingPointToFPReal(
                          concrete[0].getType().getConst<FloatingPointSize>())),
-                     nm->mkConst(ROUND_TOWARD_NEGATIVE),
+                     nm->mkConst(RoundingMode::ROUND_TOWARD_NEGATIVE),
                      abstractValue));
 
       Node bl = nm->mkNode(
index 4f340e774d7fd7896dc7251374ea18d2bef615c2..c521002097ea08ddb5f106cb392fca2f0bfc6e35 100644 (file)
@@ -39,6 +39,7 @@
 #include "base/check.h"
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/fp/fp_converter.h"
+#include "util/floatingpoint.h"
 
 namespace cvc5 {
 namespace theory {
@@ -1084,23 +1085,23 @@ RewriteResponse maxTotal(TNode node, bool isPreRewrite)
     RoundingMode arg0(node[0].getConst<RoundingMode>());
     switch (arg0)
     {
-      case ROUND_NEAREST_TIES_TO_EVEN:
+      case RoundingMode::ROUND_NEAREST_TIES_TO_EVEN:
         value = symfpuSymbolic::traits::RNE().getConst<BitVector>();
         break;
 
-      case ROUND_NEAREST_TIES_TO_AWAY:
+      case RoundingMode::ROUND_NEAREST_TIES_TO_AWAY:
         value = symfpuSymbolic::traits::RNA().getConst<BitVector>();
         break;
 
-      case ROUND_TOWARD_POSITIVE:
+      case RoundingMode::ROUND_TOWARD_POSITIVE:
         value = symfpuSymbolic::traits::RTP().getConst<BitVector>();
         break;
 
-      case ROUND_TOWARD_NEGATIVE:
+      case RoundingMode::ROUND_TOWARD_NEGATIVE:
         value = symfpuSymbolic::traits::RTN().getConst<BitVector>();
         break;
 
-      case ROUND_TOWARD_ZERO:
+      case RoundingMode::ROUND_TOWARD_ZERO:
         value = symfpuSymbolic::traits::RTZ().getConst<BitVector>();
         break;
 
@@ -1499,11 +1500,11 @@ TheoryFpRewriter::TheoryFpRewriter(context::UserContext* u) : d_fpExpDef(u)
 
             NodeManager* nm = NodeManager::currentNM();
 
-            Node rne(nm->mkConst(ROUND_NEAREST_TIES_TO_EVEN));
-            Node rna(nm->mkConst(ROUND_NEAREST_TIES_TO_AWAY));
-            Node rtz(nm->mkConst(ROUND_TOWARD_POSITIVE));
-            Node rtn(nm->mkConst(ROUND_TOWARD_NEGATIVE));
-            Node rtp(nm->mkConst(ROUND_TOWARD_ZERO));
+            Node rne(nm->mkConst(RoundingMode::ROUND_NEAREST_TIES_TO_EVEN));
+            Node rna(nm->mkConst(RoundingMode::ROUND_NEAREST_TIES_TO_AWAY));
+            Node rtz(nm->mkConst(RoundingMode::ROUND_TOWARD_POSITIVE));
+            Node rtn(nm->mkConst(RoundingMode::ROUND_TOWARD_NEGATIVE));
+            Node rtp(nm->mkConst(RoundingMode::ROUND_TOWARD_ZERO));
 
             TNode rm(res.d_node[0]);
 
index 5951decd42e69e8176347e0db18bebd28bc7d50c..b78ef24c796bf8f88d557a99c9b097d250d58157 100644 (file)
@@ -17,6 +17,8 @@
 
 // This is only needed for checking that components are only applied to leaves.
 #include "theory/theory.h"
+#include "util/cardinality.h"
+#include "util/floatingpoint.h"
 #include "util/roundingmode.h"
 
 namespace cvc5 {
index c7c99adf2df6e40266a8c3e5936cda44cdeff68b..edf2974982750a53223c23c20febbdddd9e161e4 100644 (file)
@@ -84,7 +84,7 @@ class RoundingModeEnumerator
  public:
   RoundingModeEnumerator(TypeNode type, TypeEnumeratorProperties* tep = nullptr)
       : TypeEnumeratorBase<RoundingModeEnumerator>(type),
-        d_rm(ROUND_NEAREST_TIES_TO_EVEN),
+        d_rm(RoundingMode::ROUND_NEAREST_TIES_TO_EVEN),
         d_enumerationComplete(false)
   {
   }
@@ -99,11 +99,21 @@ class RoundingModeEnumerator
 
   RoundingModeEnumerator& operator++() override {
     switch (d_rm) {
-      case ROUND_NEAREST_TIES_TO_EVEN: d_rm = ROUND_TOWARD_POSITIVE; break;
-      case ROUND_TOWARD_POSITIVE: d_rm = ROUND_TOWARD_NEGATIVE; break;
-      case ROUND_TOWARD_NEGATIVE: d_rm = ROUND_TOWARD_ZERO; break;
-      case ROUND_TOWARD_ZERO: d_rm = ROUND_NEAREST_TIES_TO_AWAY; break;
-      case ROUND_NEAREST_TIES_TO_AWAY: d_enumerationComplete = true; break;
+      case RoundingMode::ROUND_NEAREST_TIES_TO_EVEN:
+        d_rm = RoundingMode::ROUND_TOWARD_POSITIVE;
+        break;
+      case RoundingMode::ROUND_TOWARD_POSITIVE:
+        d_rm = RoundingMode::ROUND_TOWARD_NEGATIVE;
+        break;
+      case RoundingMode::ROUND_TOWARD_NEGATIVE:
+        d_rm = RoundingMode::ROUND_TOWARD_ZERO;
+        break;
+      case RoundingMode::ROUND_TOWARD_ZERO:
+        d_rm = RoundingMode::ROUND_NEAREST_TIES_TO_AWAY;
+        break;
+      case RoundingMode::ROUND_NEAREST_TIES_TO_AWAY:
+        d_enumerationComplete = true;
+        break;
       default: Unreachable() << "Unknown rounding mode?"; break;
     }
     return *this;
index fd204fffd897cc41bd416d5eb40145e1f936dc2f..cfcc5f5a1fabafaee82b14a9ba599fa193bd735f 100644 (file)
@@ -23,6 +23,7 @@
 #include "theory/quantifiers/bv_inverter_utils.h"
 #include "theory/quantifiers/term_util.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
 
 using namespace cvc5::kind;
 
index ca4abf49732693d141c650604a3ee3b27772c5c9..fe47f1dd13e4f57d4492bbe48504bee3542c6afc 100644 (file)
@@ -20,6 +20,7 @@
 #include "theory/arith/arith_msum.h"
 #include "theory/quantifiers/quantifiers_inference_manager.h"
 #include "theory/rewriter.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index d5af43242089dbe5f604954f2479899003c01ac9..83234d1153a8d2db96c05e76d1e610b86a2138de 100644 (file)
@@ -20,6 +20,7 @@
 #include "theory/quantifiers/quant_util.h"
 #include "theory/quantifiers/term_util.h"
 #include "theory/rewriter.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index 7ee22dc5b2263f69cf9a2155694de9b58b3ed643..1ed3864858fd1812fe5a6dfd0dd7c868fb60afaf 100644 (file)
@@ -18,6 +18,7 @@
 #include <sstream>
 #include <stack>
 
+#include "expr/ascription_type.h"
 #include "expr/dtype_cons.h"
 #include "options/quantifiers_options.h"
 #include "theory/bv/theory_bv_utils.h"
@@ -30,6 +31,7 @@
 #include "theory/quantifiers/term_util.h"
 #include "theory/rewriter.h"
 #include "theory/strings/word.h"
+#include "util/floatingpoint.h"
 
 using namespace cvc5::kind;
 
index a5c7af161c284f2b942338646685a39fe107a343..28506d0bd52d161a8f5c767d627cae00b08988ff 100644 (file)
 #define CVC5__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H
 
 #include <map>
-#include "options/main_options.h"
-#include "theory/quantifiers/sygus/sygus_unif.h"
 
+#include "options/main_options.h"
 #include "theory/quantifiers/lazy_trie.h"
+#include "theory/quantifiers/sygus/sygus_unif.h"
+#include "util/bool.h"
 
 namespace cvc5 {
 namespace theory {
index 0c9cb91d7118a072a6a6ee1e06d701b4e6bcd056..746cc7f119b5a39db215b1a336d0f1277deceb83 100644 (file)
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/quantifiers/term_database.h"
 #include "theory/quantifiers/term_enumeration.h"
-#include "theory/strings/word.h"
 #include "theory/rewriter.h"
+#include "theory/strings/word.h"
+#include "util/bitvector.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index 22b77c4fbd9e5d2b622177baa2e5456cf69dfe7c..6d1b9955afcc20d043ef0855941e85f531407985 100644 (file)
@@ -18,6 +18,7 @@
 #include <map>
 
 #include "base/map_util.h"
+#include "expr/emptyset.h"
 #include "expr/kind.h"
 #include "expr/skolem_manager.h"
 #include "options/quantifiers_options.h"
@@ -32,6 +33,7 @@
 #include "theory/sep/theory_sep_rewriter.h"
 #include "theory/theory_model.h"
 #include "theory/valuation.h"
+#include "util/cardinality.h"
 
 using namespace std;
 using namespace cvc5::kind;
index 8e6cd08c640c4eeade7bb870bd33426fe0c99330..afd8602880da77aa8272abe1c635ed3f1550e543 100644 (file)
  * \todo document this file
  */
 
-#include "expr/attribute.h"
 #include "theory/sep/theory_sep_rewriter.h"
-#include "theory/quantifiers/quant_util.h"
+
+#include "expr/attribute.h"
+#include "expr/emptyset.h"
 #include "options/sep_options.h"
+#include "theory/quantifiers/quant_util.h"
 
 namespace cvc5 {
 namespace theory {
index ec5abfacc986baad66a84681aa711242f7c85724..063c440a511b89e6c4f1de9736f8bd8d6e7261ea 100644 (file)
@@ -25,6 +25,8 @@
 #include "theory/sets/normal_form.h"
 #include "theory/theory_model.h"
 #include "theory/valuation.h"
+#include "util/cardinality.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::kind;
index 0f15727e07e21fef540a18ff9210e83f4f0ad601..4bde524f75dfbfb6a503432f832040ebb747bd76 100644 (file)
@@ -16,10 +16,11 @@ properties check presolve
 
 # constants
 constant EMPTYSET \
-    ::cvc5::EmptySet \
-    ::cvc5::EmptySetHashFunction \
-    "expr/emptyset.h" \
-    "the empty set constant; payload is an instance of the cvc5::EmptySet class"
+  class \
+  EmptySet \
+  ::cvc5::EmptySetHashFunction \
+  "expr/emptyset.h" \
+  "the empty set constant; payload is an instance of the cvc5::EmptySet class"
 
 # the type
 operator SET_TYPE 1 "set type, takes as parameter the type of the elements"
@@ -42,10 +43,11 @@ operator SUBSET         2  "subset predicate; first parameter a subset of second
 operator MEMBER         2  "set membership predicate; first parameter a member of second"
 
 constant SINGLETON_OP \
-       ::cvc5::SingletonOp \
-       ::cvc5::SingletonOpHashFunction \
-       "theory/sets/singleton_op.h" \
-       "operator for singletons; payload is an instance of the cvc5::SingletonOp class"
+  class \
+  SingletonOp \
+  ::cvc5::SingletonOpHashFunction \
+  "theory/sets/singleton_op.h" \
+  "operator for singletons; payload is an instance of the cvc5::SingletonOp class"
 parameterized SINGLETON SINGLETON_OP 1  \
 "constructs a set of a single element. First parameter is a SingletonOp. Second is a term"
 
index 930f7da860513bf18676f536ed0fc627d959f3f8..eb839e1c020fd90bfd102b5755d6dbfd148147f2 100644 (file)
@@ -18,6 +18,8 @@
 #ifndef CVC5__THEORY__SETS__NORMAL_FORM_H
 #define CVC5__THEORY__SETS__NORMAL_FORM_H
 
+#include "expr/emptyset.h"
+
 namespace cvc5 {
 namespace theory {
 namespace sets {
index fad14bb71af3fce6765a93a1c072646fd030e55a..42e31740201211ac74438815e5ff1ae1961ad042 100644 (file)
@@ -26,6 +26,7 @@
 #include "theory/sets/normal_form.h"
 #include "theory/sets/theory_sets.h"
 #include "theory/theory_model.h"
+#include "util/rational.h"
 #include "util/result.h"
 
 using namespace std;
index 69780b04cf615c4fb4d9274eeaec49a64024cc2a..0546c7f9531fe9146a99b616f62e543888f5bee8 100644 (file)
@@ -18,6 +18,7 @@
 #include "expr/skolem_manager.h"
 #include "theory/sets/theory_sets.h"
 #include "theory/sets/theory_sets_private.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::kind;
index d05318cc8db68942ae04c5ff7610048035b0ae10..14b5c6d524572b39c7219dc49eb2dfc2a0d3997b 100644 (file)
@@ -20,6 +20,7 @@
 #include "options/sets_options.h"
 #include "theory/sets/normal_form.h"
 #include "theory/sets/rels_utils.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index 503a33ebd2579faedaad948d03ced58e6e9fc92c..8c395a958012f0b153f5440e2c506e7eb2e1c9bc 100644 (file)
@@ -15,6 +15,8 @@
 
 #include "theory/sets/theory_sets_type_enumerator.h"
 
+#include "util/bitvector.h"
+
 namespace cvc5 {
 namespace theory {
 namespace sets {
index 2328659944f413447beeba4eb392754949360e2c..91c592f186f7870219e7b10bc69733451fc3595f 100644 (file)
@@ -19,6 +19,8 @@
 #include <sstream>
 
 #include "theory/sets/normal_form.h"
+#include "theory/sets/singleton_op.h"
+#include "util/cardinality.h"
 
 namespace cvc5 {
 namespace theory {
index 4c3b2f17ee31c57db7dfa8ed1769887d0442f892..66e3cf6345b929935333de137e9e7b71a8c7d210 100644 (file)
@@ -22,6 +22,7 @@
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
 #include "theory/theory.h"
+#include "util/rational.h"
 
 using namespace cvc5::kind;
 
index 6ee88b29840c58cb755ee0fc4fb010a861c2672e..00491128a7526d54fb4b4c7c3136081206ad2912 100644 (file)
@@ -21,6 +21,7 @@
 #include "theory/rewriter.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::context;
index a6e4ce6987f1ce6a367a2058a7d54af07bb2a0f8..fb1d086a4197622fa226cbb444be51d318bcde65 100644 (file)
@@ -16,6 +16,7 @@
 #include "theory/strings/core_solver.h"
 
 #include "base/configuration.h"
+#include "expr/sequence.h"
 #include "options/strings_options.h"
 #include "smt/logic_exception.h"
 #include "theory/rewriter.h"
@@ -23,6 +24,8 @@
 #include "theory/strings/strings_entail.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 using namespace std;
 using namespace cvc5::context;
index 3dbb6b89bbac6a48904c2742aad7a68754d8f137..94d99732aa0d74941504f8493d2aee4be701f550 100644 (file)
@@ -20,6 +20,7 @@
 #include "theory/rewriter.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::context;
index b9847e22abddc0dc52b1a4b92c14236ea74889f7..1353ca9643241376b8c3c3078697aa8048046d02 100644 (file)
@@ -58,10 +58,11 @@ enumerator STRING_TYPE \
     "theory/strings/type_enumerator.h"
 
 constant CONST_STRING \
-    ::cvc5::String \
-    ::cvc5::strings::StringHashFunction \
-    "util/string.h" \
-    "a string of characters"
+  class \
+  String \
+  ::cvc5::strings::StringHashFunction \
+  "util/string.h" \
+  "a string of characters"
 
 # the type
 operator SEQUENCE_TYPE 1 "seuence type, takes as parameter the type of the elements"
@@ -77,10 +78,11 @@ enumerator SEQUENCE_TYPE \
     "theory/strings/type_enumerator.h"
 
 constant CONST_SEQUENCE \
-    ::cvc5::Sequence \
-    ::cvc5::SequenceHashFunction \
-    "expr/sequence.h" \
-    "a sequence of characters"
+  class \
+  Sequence \
+  ::cvc5::SequenceHashFunction \
+  "expr/sequence.h" \
+  "a sequence of characters"
 
 operator SEQ_UNIT 1 "a sequence of length one"
 operator SEQ_NTH 2 "The nth element of a sequence"
@@ -102,17 +104,19 @@ operator REGEXP_EMPTY 0 "regexp empty"
 operator REGEXP_SIGMA 0 "regexp all characters"
 
 constant REGEXP_REPEAT_OP \
-       ::cvc5::RegExpRepeat \
-       ::cvc5::RegExpRepeatHashFunction \
-       "util/regexp.h" \
-       "operator for regular expression repeat; payload is an instance of the cvc5::RegExpRepeat class"
+  struct \
+  RegExpRepeat \
+  ::cvc5::RegExpRepeatHashFunction \
+  "util/regexp.h" \
+  "operator for regular expression repeat; payload is an instance of the cvc5::RegExpRepeat class"
 parameterized REGEXP_REPEAT REGEXP_REPEAT_OP 1 "regular expression repeat; first parameter is a REGEXP_REPEAT_OP, second is a regular expression term"
 
 constant REGEXP_LOOP_OP \
-       ::cvc5::RegExpLoop \
-       ::cvc5::RegExpLoopHashFunction \
-       "util/regexp.h" \
-       "operator for regular expression loop; payload is an instance of the cvc5::RegExpLoop class"
+  struct \
+  RegExpLoop \
+  ::cvc5::RegExpLoopHashFunction \
+  "util/regexp.h" \
+  "operator for regular expression loop; payload is an instance of the cvc5::RegExpLoop class"
 parameterized REGEXP_LOOP REGEXP_LOOP_OP 1 "regular expression loop; first parameter is a REGEXP_LOOP_OP, second is a regular expression term"
 
 #internal
index f635cdc391db080838aaf6f16c394804e6e0accb..ac0e487f9fb783847befaeadcd2fd1288caa4b3f 100644 (file)
@@ -20,6 +20,8 @@
 #include "theory/rewriter.h"
 #include "theory/strings/regexp_entail.h"
 #include "theory/strings/theory_strings_utils.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 using namespace cvc5::kind;
 
index b789db6a41cb9ba263a40dda12acaf08af2276f0..3d4a2d1437ae8c6020adc7e68991e7296bf5b4bb 100644 (file)
@@ -18,6 +18,8 @@
 #include "theory/rewriter.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 using namespace std;
 using namespace cvc5::kind;
index 96351cda9d1772d8283aa3eac9b8e913a015c09c..106ce09d0f4da8c8a3917cf7bba5d7d0e6466422 100644 (file)
@@ -23,6 +23,7 @@
 #include "theory/strings/regexp_entail.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/regexp.h"
 
 using namespace cvc5::kind;
 
index 5b046fbc59f125f19fa5bc24f63a07df9eec617b..15c37070a7569c62f0b972c5c8c86ed3ef4fcfc2 100644 (file)
 #include "theory/strings/strings_rewriter.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
+#include "util/regexp.h"
 #include "util/statistics_registry.h"
+#include "util/string.h"
 
 using namespace std;
 using namespace cvc5::kind;
index e5e014f9da0c81b24e071b9aae9876a5008c390e..1ddf2af5864f806181b766088642aad09d1d03b0 100644 (file)
@@ -18,6 +18,7 @@
 #include "theory/rewriter.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::context;
index a5d01eefd3c06a87e06f5c5a39dce92fc4a7f1c9..a527d99dc82bb230938315c0b3143e7463abf1c1 100644 (file)
@@ -21,6 +21,8 @@
 #include "theory/strings/sequences_rewriter.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 using namespace cvc5::kind;
 
index f5ccc3beffbce5f6e2219853ccd7d0706e84420c..9bb6a2420acb0ddc48a4f51b930c83356da3f3e0 100644 (file)
@@ -15,6 +15,8 @@
 
 #include "theory/strings/strings_fmf.h"
 
+#include "util/rational.h"
+
 using namespace std;
 using namespace cvc5::context;
 using namespace cvc5::kind;
index 41a8ac448c431bb9d4aee46d86d90b500e641793..b455d8a9b9012b02bde2b31f85105b78eddf25a0 100644 (file)
@@ -19,6 +19,7 @@
 #include "expr/node_builder.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "util/rational.h"
+#include "util/string.h"
 
 using namespace cvc5::kind;
 
index ced2c7dae9199a898debfd823bb0dc80ea753ade..af2eecde88c9779e93bc87295476dfa13aa709ce 100644 (file)
@@ -23,6 +23,8 @@
 #include "theory/strings/inference_manager.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 using namespace std;
 using namespace cvc5::context;
index f1b591e43288863e145badd50eeb162cad5f5359..356ae28acba6ba30d887a14bf5ebd327fd59b5e1 100644 (file)
@@ -24,7 +24,9 @@
 #include "theory/strings/arith_entail.h"
 #include "theory/strings/sequences_rewriter.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
 #include "util/statistics_registry.h"
+#include "util/string.h"
 
 using namespace cvc5;
 using namespace cvc5::kind;
index a7e891d86ced8b1681e5363c167212982aaed1ab..183344aa289ea9e46d25756e098f14dbccce42a3 100644 (file)
@@ -19,6 +19,7 @@
 #include "expr/node_manager.h"
 #include "expr/sequence.h"
 #include "options/strings_options.h"
+#include "util/cardinality.h"
 
 namespace cvc5 {
 namespace theory {
index 5df7444129b78a2eef3099e49f1f5b5467462c61..6897d5272e51a5f90ccb86c7579a193a87500caf 100644 (file)
@@ -22,6 +22,9 @@
 #include "theory/strings/arith_entail.h"
 #include "theory/strings/strings_entail.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
+#include "util/regexp.h"
+#include "util/string.h"
 
 using namespace cvc5::kind;
 
index 1f2f31a619474774cf6b25ed9a486d641a618b6d..5641312cb9ae1f958bcd22fa2c36e6232a6fb315 100644 (file)
@@ -15,6 +15,7 @@
 
 #include "theory/strings/type_enumerator.h"
 
+#include "expr/sequence.h"
 #include "theory/strings/theory_strings_utils.h"
 #include "util/string.h"
 
index e2a81f54a9fb87f1727b47e2f1350335768e2498..02fa85faacdb66ecaeb5f8ae6394b2c3790619f6 100644 (file)
@@ -19,6 +19,7 @@
 #include "theory/bv/theory_bv_utils.h"
 #include "theory/rewriter.h"
 #include "theory/strings/word.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::kind;
index dd1e0b8836b3df577ba6d236d0b568b02f35444a..8eec7f911ffd7931301277216893cb9f37b246a2 100644 (file)
@@ -23,6 +23,7 @@
 #include "smt/smt_engine.h"
 #include "theory/rewriter.h"
 #include "theory/trust_substitutions.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::kind;
index 951a62caea7dbf58f37a27c970127871897d9ec4..4034e43bda90aa536c22b8da422e925e0636b8fd 100644 (file)
@@ -26,6 +26,7 @@
 #include "theory/type_enumerator.h"
 #include "theory/type_set.h"
 #include "theory/uf/equality_engine.h"
+#include "util/cardinality.h"
 
 namespace cvc5 {
 
index 0a038845c3ae11c598510f3ff590e29f199928d0..e3e1979531d0752ac0007c14a870f921a7687808 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
+#include "expr/uninterpreted_constant.h"
 #include "options/quantifiers_options.h"
 #include "options/smt_options.h"
 #include "options/theory_options.h"
index aaeea6a4f1412e111f41aff102e6a2f2137f9cb8..97bf7aaace27f855a5aa7613f2cafe566b6a88c8 100644 (file)
@@ -22,6 +22,7 @@
 #include "base/exception.h"
 #include "expr/node.h"
 #include "expr/type_node.h"
+#include "util/integer.h"
 
 namespace cvc5 {
 namespace theory {
index 166df3c802772af512c731478b775efcf339e777..5b919860ec6670f339f958e9eb79c9ffd1da75a5 100644 (file)
@@ -28,6 +28,7 @@
 #include "theory/theory_model.h"
 #include "theory/uf/equality_engine.h"
 #include "theory/uf/theory_uf.h"
+#include "util/rational.h"
 
 using namespace std;
 using namespace cvc5::kind;
index f81abdca1f379d890f16fd75d97a60a68526d53b..e95c8963e72c52ee37bd7cda38b7ea40e22b6c80 100644 (file)
@@ -18,6 +18,8 @@
 #include <climits>
 #include <sstream>
 
+#include "util/rational.h"
+
 namespace cvc5 {
 namespace theory {
 namespace uf {
index 5fd0003bf451ea94f243f4d2ec35d985bcc56042..2938ddccacc0a20970351f4a02923af83fc3aa4a 100644 (file)
@@ -58,6 +58,7 @@ libcvc5_add_sources(
   result.h
   regexp.cpp
   regexp.h
+  roundingmode.cpp
   roundingmode.h
   safe_print.cpp
   safe_print.h
index 45fd4272faad2e25ace002f0bb21cd5b34c67618..071b69912df42dbe01519b0e5d5735497ab2077c 100644 (file)
@@ -382,11 +382,17 @@ wrappedBitVector<isSigned> wrappedBitVector<isSigned>::extract(
 template class wrappedBitVector<true>;
 template class wrappedBitVector<false>;
 
-traits::rm traits::RNE(void) { return ::cvc5::ROUND_NEAREST_TIES_TO_EVEN; };
-traits::rm traits::RNA(void) { return ::cvc5::ROUND_NEAREST_TIES_TO_AWAY; };
-traits::rm traits::RTP(void) { return ::cvc5::ROUND_TOWARD_POSITIVE; };
-traits::rm traits::RTN(void) { return ::cvc5::ROUND_TOWARD_NEGATIVE; };
-traits::rm traits::RTZ(void) { return ::cvc5::ROUND_TOWARD_ZERO; };
+traits::rm traits::RNE(void)
+{
+  return RoundingMode::ROUND_NEAREST_TIES_TO_EVEN;
+};
+traits::rm traits::RNA(void)
+{
+  return RoundingMode::ROUND_NEAREST_TIES_TO_AWAY;
+};
+traits::rm traits::RTP(void) { return RoundingMode::ROUND_TOWARD_POSITIVE; };
+traits::rm traits::RTN(void) { return RoundingMode::ROUND_TOWARD_NEGATIVE; };
+traits::rm traits::RTZ(void) { return RoundingMode::ROUND_TOWARD_ZERO; };
 // This is a literal back-end so props are actually bools
 // so these can be handled in the same way as the internal assertions above
 
diff --git a/src/util/roundingmode.cpp b/src/util/roundingmode.cpp
new file mode 100644 (file)
index 0000000..00aec66
--- /dev/null
@@ -0,0 +1,46 @@
+/******************************************************************************
+ * Top contributors (to current version):
+ *   Andres Noetzli
+ *
+ * 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.
+ * ****************************************************************************
+ *
+ * The definition of rounding mode values.
+ */
+
+#include "roundingmode.h"
+
+#include <iostream>
+
+#include "base/check.h"
+
+namespace cvc5 {
+
+std::ostream& operator<<(std::ostream& os, RoundingMode rm)
+{
+  switch (rm)
+  {
+    case RoundingMode::ROUND_NEAREST_TIES_TO_EVEN:
+      os << "ROUND_NEAREST_TIES_TO_EVEN";
+      break;
+    case RoundingMode::ROUND_TOWARD_POSITIVE:
+      os << "ROUND_TOWARD_POSITIVE";
+      break;
+    case RoundingMode::ROUND_TOWARD_NEGATIVE:
+      os << "ROUND_TOWARD_NEGATIVE";
+      break;
+    case RoundingMode::ROUND_TOWARD_ZERO: os << "ROUND_TOWARD_ZERO"; break;
+    case RoundingMode::ROUND_NEAREST_TIES_TO_AWAY:
+      os << "ROUND_NEAREST_TIES_TO_AWAY";
+      break;
+    default: Unreachable();
+  }
+  return os;
+}
+
+}  // namespace cvc5
index 06b2b54cd239706d83839c4156d167073b373b35..f4edbd00b29313a8f24763e5adfb3260b0a8e390 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <fenv.h>
 
+#include <iosfwd>
+
 namespace cvc5 {
 
 #define CVC5_NUM_ROUNDING_MODES 5
@@ -26,7 +28,7 @@ namespace cvc5 {
 /**
  * A concrete instance of the rounding mode sort
  */
-enum RoundingMode
+enum class RoundingMode
 {
   ROUND_NEAREST_TIES_TO_EVEN = FE_TONEAREST,
   ROUND_TOWARD_POSITIVE = FE_UPWARD,
@@ -46,6 +48,8 @@ struct RoundingModeHashFunction
   inline size_t operator()(const RoundingMode& rm) const { return size_t(rm); }
 }; /* struct RoundingModeHashFunction */
 
+std::ostream& operator<<(std::ostream& os, RoundingMode s);
+
 }  // namespace cvc5
 
 #endif
index e96d3ec9e92bad36c7ce17fb34949fbb19a27b0d..df8fb9383850af86fca50b8e750574d83d632347 100644 (file)
@@ -21,6 +21,7 @@
 #include "expr/node_manager.h"
 #include "test_node.h"
 #include "theory/bv/theory_bv_utils.h"
+#include "util/bitvector.h"
 #include "util/integer.h"
 #include "util/rational.h"
 
index 852f06dbcf0be9923f7f0628862b326736179795..94a2e5fb641ac3a3b3531602535ad325c807ce31 100644 (file)
@@ -19,6 +19,7 @@
 #include <vector>
 
 #include "api/cpp/cvc5.h"
+#include "expr/array_store_all.h"
 #include "expr/dtype.h"
 #include "expr/dtype_cons.h"
 #include "expr/node.h"
@@ -29,6 +30,8 @@
 #include "smt/smt_engine.h"
 #include "test_node.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index bf0b8db57fa65af67e8011df4021aab637731c29..eb6f77bdc904175968757fa86de634e6c9d9d155 100644 (file)
@@ -18,6 +18,7 @@
 #include "base/check.h"
 #include "expr/node_builder.h"
 #include "test_node.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index 4fb057fa9590a3377bd33d1db6729cdb251e61cb..d8db32a4bc309cc7eefdc6eadf0b9af42b626fa1 100644 (file)
@@ -21,6 +21,7 @@
 #include "expr/type_node.h"
 #include "smt/smt_engine.h"
 #include "test_node.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index 64b93b3db6925b2fa5c01d097debc6d4cf625f88..223cef13b0de1e32e5df326fd46e7f4348fe2cda 100644 (file)
@@ -17,6 +17,7 @@
 #include "preprocessing/passes/foreign_theory_rewrite.h"
 #include "smt/smt_engine.h"
 #include "test_smt.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index a80b27ace7ab252f1fdc1badd5a9988b53cfe4fe..6b778989a637764d979b65b447e7e4b410fa8452 100644 (file)
@@ -21,6 +21,8 @@
 #include "options/language.h"
 #include "smt/smt_engine.h"
 #include "test_smt.h"
+#include "util/regexp.h"
+#include "util/string.h"
 
 namespace cvc5 {
 
index bb7f900be5e85c762bf16a7fc4ec18fd09969486..c5a5924d48b8b4bc18c393711dee24814d9433c3 100644 (file)
@@ -26,6 +26,8 @@
 #include "theory/strings/sequences_rewriter.h"
 #include "theory/strings/strings_entail.h"
 #include "theory/strings/strings_rewriter.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 namespace cvc5 {
 
index bc6f400c070421a3a693c7e6d713a65d9615b079..020fb6e8f55d614adb9363e4818b2247c023e9dc 100644 (file)
@@ -22,6 +22,7 @@
 #include "test_smt.h"
 #include "theory/rewriter.h"
 #include "theory/strings/strings_rewriter.h"
+#include "util/string.h"
 
 namespace cvc5 {
 
index 88808c0187afb2572d07a912f0364c5f76e771c8..556a84d459a0117f9144d804544ee4e00b12595c 100644 (file)
  */
 
 #include "expr/dtype.h"
+#include "expr/emptybag.h"
+#include "expr/emptyset.h"
 #include "test_smt.h"
 #include "theory/bags/bags_rewriter.h"
 #include "theory/bags/normal_form.h"
 #include "theory/strings/type_enumerator.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 namespace cvc5 {
 
index 6828e8cdfd7801af435c38f44ff0ab5498888308..f70ff0c5dcb36c112d4bcebd1b5fbe3e47b6971c 100644 (file)
  */
 
 #include "expr/dtype.h"
+#include "expr/emptybag.h"
 #include "test_smt.h"
 #include "theory/bags/bags_rewriter.h"
 #include "theory/strings/type_enumerator.h"
+#include "util/rational.h"
+#include "util/string.h"
 
 namespace cvc5 {
 
index 4d8270ec6f1eeabaf504f530d26615cfefd3d467..8013d06ea842e1a6b745fc79253db17681ad648e 100644 (file)
@@ -17,6 +17,7 @@
 #include "test_smt.h"
 #include "theory/bags/theory_bags_type_rules.h"
 #include "theory/strings/type_enumerator.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index db4a1e046df7b8515293ab43f37caf6b60a9c24d..766d696a18e60705500aa35e197d023a503530d5 100644 (file)
 #include <sstream>
 #include <vector>
 
+#include "expr/array_store_all.h"
 #include "expr/node.h"
 #include "expr/node_builder.h"
 #include "expr/node_value.h"
 #include "test_smt.h"
 #include "theory/rewriter.h"
+#include "util/bitvector.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index ff08a2024ca08528513ae873108b21310109ea5d..1e19b14b420ff6e39345b258df259ba43431053c 100644 (file)
@@ -20,6 +20,7 @@
 #include "test_smt.h"
 #include "theory/bv/int_blaster.h"
 #include "util/bitvector.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index 2617472a23933ba103d3a68d17750ba23153a9b3..3422b278433051943ba71796ecef1cc6ccfbb810 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "smt/optimization_solver.h"
 #include "test_smt.h"
+#include "util/bitvector.h"
 
 namespace cvc5 {
 
index 9d5c5c03f25b0d0e422101a30149f2884eecdda9..770927544b9e84d0d2b4c90e29b362d659e7918a 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "smt/optimization_solver.h"
 #include "test_smt.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index ccf26cbbd3d213f46f5bf9e4fd309ee10b43515a..81884732a4421b7d45abccb86db18136f2970bdf 100644 (file)
@@ -16,6 +16,8 @@
 #include "expr/dtype.h"
 #include "test_api.h"
 #include "test_node.h"
+#include "theory/sets/singleton_op.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index 1860c3be87286b5796d8be527cf9b04e6a001e53..4706be523cbd459f48088c47f378c6234cd07d98 100644 (file)
@@ -19,6 +19,7 @@
 #include "expr/node.h"
 #include "test_node.h"
 #include "theory/strings/theory_strings_utils.h"
+#include "util/string.h"
 
 namespace cvc5 {
 
index 9119cf1af258e26c476861bd563e2edd74ddc52f..941c422a1c58360bfc3afc8d10d05923b55fee05 100644 (file)
@@ -20,6 +20,7 @@
 #include "expr/node.h"
 #include "test_node.h"
 #include "theory/strings/word.h"
+#include "util/string.h"
 
 namespace cvc5 {
 
index baf3af40e0747373ed618df441d88c3e636ea3c5..bb7ef871c97b710735750d4ad3ef1e133c05f023 100644 (file)
 #include "expr/dtype.h"
 #include "expr/kind.h"
 #include "expr/type_node.h"
+#include "expr/uninterpreted_constant.h"
 #include "options/language.h"
 #include "test_smt.h"
 #include "theory/type_enumerator.h"
+#include "util/bitvector.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 
index a33848610d89281a90f044cdc9c0d5a352bda3a2..1272926db18849f87e0cd8792fb9d924001fe058 100644 (file)
@@ -14,7 +14,9 @@
  */
 
 #include "expr/array_store_all.h"
+#include "expr/uninterpreted_constant.h"
 #include "test_smt.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace test {
index a19ab31a1800108fbd497cace48b4d1f2e658476..760bb2f75b22573d8a01141a1d85dae99ad8823b 100644 (file)
@@ -19,6 +19,7 @@
 #include "expr/dtype_cons.h"
 #include "expr/type_node.h"
 #include "test_smt.h"
+#include "util/rational.h"
 
 namespace cvc5 {
 namespace test {