This PR cleans up a ton of includes, based on the suggestions of iwyu.
Mostly, it removes includes from header files in favor of forward declarations and adds includes to source files.
#include "base/check.h"
#include "base/configuration.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
+#include "expr/dtype_selector.h"
#include "expr/expr.h"
#include "expr/expr_manager.h"
#include "expr/expr_manager_scope.h"
namespace CVC4 {
-thread_local LastExceptionBuffer* LastExceptionBuffer::s_currentBuffer = NULL;
+thread_local LastExceptionBuffer* LastExceptionBuffer::s_currentBuffer = nullptr;
-LastExceptionBuffer::LastExceptionBuffer() : d_contents(NULL) {}
+LastExceptionBuffer::LastExceptionBuffer() : d_contents(nullptr) {}
LastExceptionBuffer::~LastExceptionBuffer() {
- if(d_contents != NULL){
+ if(d_contents != nullptr){
free(d_contents);
- d_contents = NULL;
+ d_contents = nullptr;
}
}
void LastExceptionBuffer::setContents(const char* string) {
- if(d_contents != NULL){
+ if(d_contents != nullptr){
free(d_contents);
- d_contents = NULL;
+ d_contents = nullptr;
}
- if(string != NULL){
+ if(string != nullptr){
d_contents = strdup(string);
}
}
va_start(args, format);
int n = 512;
- char* buf = NULL;
+ char* buf = nullptr;
for (int i = 0; i < 2; ++i){
Assert(n > 0);
break;
}
}
- // buf is not NULL is an invariant.
+ // buf is not nullptr is an invariant.
// buf is also 0 terminated.
- Assert(buf != NULL);
+ Assert(buf != nullptr);
std::string result(buf);
delete [] buf;
va_end(args);
buf = new char[n];
int size;
- if(extra == NULL) {
+ if(extra == nullptr) {
size = snprintf(buf, n, "%s\n%s\n%s",
header, function, tail);
} else {
#ifdef CVC4_DEBUG
LastExceptionBuffer* buffer = LastExceptionBuffer::getCurrent();
- if(buffer != NULL){
- if(buffer->getContents() == NULL) {
+ if(buffer != nullptr){
+ if(buffer->getContents() == nullptr) {
buffer->setContents(buf);
}
}
buf = new char[n];
int size;
- if(extra == NULL) {
+ if(extra == nullptr) {
size = snprintf(buf, n, "%s.\n%s\n",
header, function);
} else {
#ifdef CVC4_DEBUG
LastExceptionBuffer* buffer = LastExceptionBuffer::getCurrent();
- if(buffer != NULL){
- if(buffer->getContents() == NULL) {
+ if(buffer != nullptr){
+ if(buffer->getContents() == nullptr) {
buffer->setContents(buf);
}
}
static void setCurrent(LastExceptionBuffer* buffer) { s_currentBuffer = buffer; }
static const char* currentContents() {
- return (getCurrent() == NULL) ? NULL : getCurrent()->getContents();
+ return (getCurrent() == nullptr) ? nullptr : getCurrent()->getContents();
}
private:
#ifndef CVC4__LISTENER_H
#define CVC4__LISTENER_H
-#include <list>
-
namespace CVC4 {
/**
#include <ios>
#include <iostream>
-#include <streambuf>
#include <string>
#include <cstdio>
-#include <cstdarg>
#include <set>
#include <utility>
#ifndef CVC4__CONTEXT__CDLIST_H
#define CVC4__CONTEXT__CDLIST_H
+#include <cstring>
#include <iterator>
#include <memory>
#include <string>
#include <iostream>
+#include <string>
#include <vector>
#include "base/check.h"
#define CVC4__CONTEXT__CONTEXT_H
#include <cstdlib>
-#include <cstring>
#include <iostream>
#include <memory>
-#include <new>
#include <typeinfo>
#include <vector>
#include "expr/buffered_proof_generator.h"
#include "expr/proof.h"
+#include "expr/proof_node_manager.h"
namespace CVC4 {
#ifndef CVC4__EXPR__BUFFERED_PROOF_GENERATOR_H
#define CVC4__EXPR__BUFFERED_PROOF_GENERATOR_H
-#include <map>
-#include <vector>
-
#include "context/cdhashmap.h"
-#include "context/cdhashset.h"
#include "expr/proof_generator.h"
-#include "expr/proof_node_manager.h"
#include "expr/proof_step_buffer.h"
namespace CVC4 {
+class ProofNodeManager;
+
/**
* The proof generator for buffered steps. This class is a context-dependent
* mapping from formulas to proof steps. It does not generate ProofNodes until it
#include <sstream>
#include <string>
+#include "util/hash.h"
#include "util/integer.h"
using namespace std;
#define CVC4__DATATYPE_INDEX_H
#include <iosfwd>
-#include "util/hash.h"
namespace CVC4 {
**/
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "expr/type_matcher.h"
#include <map>
#include <string>
#include <vector>
-#include "expr/dtype_cons.h"
-#include "expr/dtype_selector.h"
+#include "expr/attribute.h"
#include "expr/node.h"
-#include "expr/node_manager_attributes.h"
#include "expr/type_node.h"
namespace CVC4 {
typedef expr::Attribute<DTypeUFiniteComputedTag, bool> DTypeUFiniteComputedAttr;
// ----------------------- end datatype attributes
-class NodeManager;
+class DTypeConstructor;
/**
* The Node-level representation of an inductive datatype, which currently
#include "expr/lazy_proof.h"
#include "expr/proof_ensure_closed.h"
+#include "expr/proof_node_manager.h"
using namespace CVC4::kind;
#include "expr/proof.h"
#include "expr/proof_generator.h"
-#include "expr/proof_node_manager.h"
namespace CVC4 {
+class ProofNodeManager;
+
/**
* A (context-dependent) lazy proof. This class is an extension of CDProof
* that additionally maps facts to proof generators in a context-dependent
#include "expr/proof.h"
#include "expr/proof_ensure_closed.h"
#include "expr/proof_node_algorithm.h"
+#include "expr/proof_node_manager.h"
#include "options/proof_options.h"
namespace CVC4 {
#include "context/cdhashmap.h"
#include "expr/proof_generator.h"
-#include "expr/proof_node_manager.h"
namespace CVC4 {
+class ProofNodeManager;
+
/**
* A (context-dependent) lazy generator for proof chains. This class is an
* extension of ProofGenerator that additionally that maps facts to proof
#include "base/exception.h"
#include "base/output.h"
#include "expr/attribute.h"
+#include "expr/type_checker.h"
using namespace std;
#ifndef CVC4__NODE_H
#define CVC4__NODE_H
-#include <algorithm>
-#include <functional>
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
#include "base/check.h"
-#include "base/configuration.h"
#include "base/exception.h"
#include "base/output.h"
#include "expr/expr.h"
#include "expr/expr_iomanip.h"
#include "expr/kind.h"
#include "expr/metakind.h"
-#include "expr/type.h"
#include "options/language.h"
#include "options/set_language.h"
#include "util/hash.h"
//#include "expr/attribute.h"
#include "expr/node_manager.h"
-#include "expr/type_checker.h"
namespace CVC4 {
#include "expr/attribute.h"
#include "expr/bound_var_manager.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_manager_attributes.h"
#include "expr/skolem_manager.h"
#include "expr/type_checker.h"
#include "node_traversal.h"
+#include <functional>
+
namespace CVC4 {
NodeDfsIterator::NodeDfsIterator(TNode n,
#ifndef CVC4__EXPR__NODE_TRAVERSAL_H
#define CVC4__EXPR__NODE_TRAVERSAL_H
-#include <functional>
#include <iterator>
#include <unordered_map>
#include <vector>
}/* CVC4 namespace */
#include "expr/node_manager.h"
-#include "expr/type_node.h"
namespace CVC4 {
namespace expr {
}/* CVC4 namespace */
#include "expr/node.h"
-#include "expr/type_node.h"
namespace CVC4 {
namespace expr {
#include "expr/proof.h"
+#include "expr/proof_node_manager.h"
+
using namespace CVC4::kind;
namespace CVC4 {
#include "expr/node.h"
#include "expr/proof_generator.h"
#include "expr/proof_node.h"
-#include "expr/proof_node_manager.h"
#include "expr/proof_step_buffer.h"
namespace CVC4 {
+class ProofNodeManager;
+
/**
* A (context-dependent) proof.
*
#include "theory/quantifiers/ematching/pattern_term_selector.h"
#include "theory/quantifiers/quantifiers_registry.h"
#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "theory/rewriter.h"
#include "preprocessing/preprocessing_pass_context.h"
#include "expr/node_algorithm.h"
+#include "smt/logic_request.h"
namespace CVC4 {
namespace preprocessing {
#include <vector>
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
+#include "expr/dtype_selector.h"
#include "expr/node_manager_attributes.h" // for VarNameAttr
#include "expr/node_visitor.h"
#include "expr/sequence.h"
#include "printer/smt2/smt2_printer.h"
#include <iostream>
+#include <list>
#include <string>
#include <typeinfo>
#include <vector>
#include "api/cvc4cpp.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_manager_attributes.h"
#include "expr/node_visitor.h"
#include "expr/sequence.h"
#include "prop/prop_proof_manager.h"
#include "prop/sat_solver_types.h"
#include "theory/trust_node.h"
+#include "theory/theory_inference_manager.h"
#include "util/resource_manager.h"
#include "util/result.h"
#include "util/unsafe_interrupt_exception.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "util/sexpr.h"
+#include "util/unsafe_interrupt_exception.h"
#include "util/utility.h"
using namespace std;
#include "smt/dump.h"
+#include "base/configuration.h"
#include "base/output.h"
#include "lib/strtok_r.h"
#include "preprocessing/preprocessing_pass_registry.h"
#include "smt/listeners.h"
+#include "base/configuration.h"
#include "expr/attribute.h"
#include "expr/node_manager_attributes.h"
#include "options/smt_options.h"
#ifndef CVC4__LOGIC_REQUEST_H
#define CVC4__LOGIC_REQUEST_H
-#include "expr/kind.h"
+#include "theory/theory_id.h"
namespace CVC4 {
#include "options/strings_options.h"
#include "options/theory_options.h"
#include "options/uf_options.h"
+#include "smt/logic_exception.h"
#include "theory/theory.h"
using namespace CVC4::theory;
#include "smt/dump_manager.h"
#include "smt/interpolation_solver.h"
#include "smt/listeners.h"
-#include "smt/logic_request.h"
#include "smt/model_blocker.h"
#include "smt/model_core_builder.h"
#include "smt/node_command.h"
#include <vector>
#include <map>
-#include "base/modal_exception.h"
#include "context/cdhashmap_forward.h"
-#include "context/cdhashset_forward.h"
#include "context/cdlist_forward.h"
#include "options/options.h"
-#include "smt/logic_exception.h"
#include "smt/output_manager.h"
#include "smt/smt_mode.h"
#include "theory/logic_info.h"
-#include "util/hash.h"
#include "util/result.h"
#include "util/sexpr.h"
#include "util/statistics.h"
-#include "util/unsafe_interrupt_exception.h"
// In terms of abstraction, this is below (and provides services to)
// ValidityChecker and above (and requires the services of)
struct NodeHashFunction;
class NodeManager;
-class DecisionEngine;
class TheoryEngine;
class ProofManager;
class UnsatCore;
#include "theory/arith/arith_preprocess.h"
+#include "theory/arith/inference_manager.h"
+
namespace CVC4 {
namespace theory {
namespace arith {
#define CVC4__THEORY__ARITH__ARITH_REWRITER_H
#include "theory/arith/rewrites.h"
-#include "theory/theory.h"
#include "theory/theory_rewriter.h"
namespace CVC4 {
#include "options/arith_options.h"
#include "smt/smt_statistics_registry.h"
#include "theory/arith/constraint.h"
+#include "theory/arith/error_set.h"
using namespace std;
#include "options/arith_options.h"
#include "smt/smt_statistics_registry.h"
#include "theory/arith/constraint.h"
+#include "theory/arith/error_set.h"
using namespace std;
#include "options/arith_options.h"
#include "smt/smt_statistics_registry.h"
#include "theory/arith/constraint.h"
+#include "theory/arith/error_set.h"
#include "util/statistics_registry.h"
using namespace std;
#pragma once
+#include "theory/arith/error_set.h"
#include "theory/arith/simplex.h"
#include "util/dense_map.h"
#include "util/statistics_registry.h"
#include "options/arith_options.h"
#include "theory/arith/nl/cad/projections.h"
#include "theory/arith/nl/cad/variable_ordering.h"
+#include "theory/arith/nl/nl_model.h"
namespace std {
/** Generic streaming operator for std::vector. */
#include "theory/arith/nl/cad/constraints.h"
#include "theory/arith/nl/cad/proof_generator.h"
#include "theory/arith/nl/cad/variable_ordering.h"
-#include "theory/arith/nl/nl_model.h"
namespace CVC4 {
namespace theory {
namespace arith {
namespace nl {
+
+class NlModel;
+
namespace cad {
/**
#include "theory/arith/nl/cad_solver.h"
-#ifdef CVC4_POLY_IMP
-#include <poly/polyxx.h>
-#endif
-
-#include "options/arith_options.h"
#include "theory/inference_id.h"
+#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/cad/cdcac.h"
+#include "theory/arith/nl/nl_model.h"
#include "theory/arith/nl/poly_conversion.h"
-#include "util/poly_util.h"
namespace CVC4 {
namespace theory {
#include <vector>
+#include "context/context.h"
#include "expr/node.h"
-#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/cad/cdcac.h"
#include "theory/arith/nl/cad/proof_checker.h"
-#include "theory/arith/nl/nl_model.h"
+#include "util/real_algebraic_number.h"
namespace CVC4 {
namespace theory {
namespace arith {
+
+class InferenceManager;
+
namespace nl {
+class NlModel;
+
/**
* A solver for nonlinear arithmetic that implements the CAD-based method
* described in https://arxiv.org/pdf/2003.05633.pdf.
#include <vector>
#include "expr/node.h"
+#include "expr/proof.h"
#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/ext/monomial.h"
#include "theory/arith/nl/nl_model.h"
#include "expr/node.h"
#include "expr/proof_set.h"
-#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/ext/monomial.h"
-#include "theory/arith/nl/nl_model.h"
namespace CVC4 {
+
+class CDProof;
+
namespace theory {
namespace arith {
+
+class InferenceManager;
+
namespace nl {
+class NlModel;
+
struct ExtState
{
ExtState(InferenceManager& im,
#include "theory/arith/nl/ext/factoring_check.h"
#include "expr/node.h"
+#include "expr/proof.h"
#include "expr/skolem_manager.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/nl_model.h"
+#include "theory/rewriter.h"
namespace CVC4 {
namespace theory {
#include "theory/arith/nl/ext/monomial_bounds_check.h"
#include "expr/node.h"
+#include "expr/proof.h"
#include "options/arith_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/arith_utilities.h"
#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/nl_model.h"
+#include "theory/rewriter.h"
namespace CVC4 {
namespace theory {
#include "theory/arith/nl/ext/monomial_check.h"
#include "expr/node.h"
+#include "expr/proof.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/nl_model.h"
#define CVC4__THEORY__ARITH__NL__EXT__MONOMIAL_CHECK_H
#include "expr/node.h"
+#include "theory/theory_inference.h"
#include "theory/arith/nl/ext/ext_state.h"
namespace CVC4 {
#include "theory/arith/nl/ext/split_zero_check.h"
#include "expr/node.h"
+#include "expr/proof.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/nl_model.h"
+#include "theory/rewriter.h"
namespace CVC4 {
namespace theory {
#define CVC4__THEORY__ARITH__NL__EXT__SPLIT_ZERO_CHECK_H
#include "expr/node.h"
+#include "context/cdhashset.h"
#include "theory/arith/nl/ext/ext_state.h"
namespace CVC4 {
#include "theory/arith/nl/ext/tangent_plane_check.h"
#include "expr/node.h"
+#include "expr/proof.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/nl_model.h"
+#include "theory/rewriter.h"
namespace CVC4 {
namespace theory {
#include "theory/arith/nl/ext_theory_callback.h"
#include "theory/arith/arith_utilities.h"
+#include "theory/uf/equality_engine.h"
using namespace CVC4::kind;
#include "options/smt_options.h"
#include "preprocessing/passes/bv_to_int.h"
#include "theory/arith/arith_msum.h"
+#include "theory/arith/arith_state.h"
#include "theory/arith/arith_utilities.h"
+#include "theory/arith/inference_manager.h"
+#include "theory/arith/nl/nl_model.h"
#include "util/iand.h"
using namespace CVC4::kind;
#include "context/cdhashset.h"
#include "expr/node.h"
-#include "theory/arith/arith_state.h"
-#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/iand_utils.h"
#include "theory/arith/nl/nl_lemma_utils.h"
-#include "theory/arith/nl/nl_model.h"
namespace CVC4 {
namespace theory {
namespace arith {
+
+class ArithState;
+class InferenceManager;
+
namespace nl {
+class NlModel;
+
/** Integer and solver class
*
*/
#include "cvc4_private.h"
#include "theory/arith/nl/nl_model.h"
+#include "theory/rewriter.h"
+
namespace CVC4 {
namespace theory {
namespace arith {
#ifndef CVC4__THEORY__ARITH__IAND_TABLE_H
#define CVC4__THEORY__ARITH__IAND_TABLE_H
-#include <tuple>
+#include <map>
#include <vector>
#include "expr/node.h"
#include "base/output.h"
#include "expr/node_algorithm.h"
#include "theory/arith/arith_msum.h"
+#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/poly_conversion.h"
#include "theory/arith/normal_form.h"
#include "theory/rewriter.h"
#include "expr/node.h"
#include "theory/arith/bound_inference.h"
-#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/icp/candidate.h"
#include "theory/arith/nl/icp/contraction_origins.h"
#include "theory/arith/nl/icp/intersection.h"
namespace CVC4 {
namespace theory {
namespace arith {
+
+class InferenceManager;
+
namespace nl {
namespace icp {
#include <iostream>
+#include <poly/polyxx.h>
+
#include "base/check.h"
#include "base/output.h"
#include "theory/arith/nl/poly_conversion.h"
#include "util/real_algebraic_number.h"
#ifdef CVC4_POLY_IMP
-#include <poly/polyxx.h>
+namespace poly {
+ class Interval;
+}
namespace CVC4 {
namespace theory {
#include "options/theory_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/arith_utilities.h"
+#include "theory/theory_model.h"
#include "theory/rewriter.h"
using namespace CVC4::kind;
#include <unordered_map>
#include <vector>
-#include "context/cdo.h"
-#include "context/context.h"
#include "expr/kind.h"
#include "expr/node.h"
#include "theory/arith/nl/nl_lemma_utils.h"
-#include "theory/theory_model.h"
namespace CVC4 {
+
+namespace context {
+class Context;
+}
+
namespace theory {
+
+class TheoryModel;
+
namespace arith {
namespace nl {
#include "theory/arith/nl/nonlinear_extension.h"
#include "options/arith_options.h"
-#include "options/theory_options.h"
#include "theory/arith/arith_state.h"
-#include "theory/arith/arith_utilities.h"
#include "theory/arith/bound_inference.h"
+#include "theory/arith/inference_manager.h"
+#include "theory/arith/nl/nl_lemma_utils.h"
#include "theory/arith/theory_arith.h"
#include "theory/ext_theory.h"
#include "theory/theory_model.h"
#include <map>
#include <vector>
-#include "context/cdlist.h"
-#include "expr/kind.h"
#include "expr/node.h"
-#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/cad_solver.h"
#include "theory/arith/nl/ext/factoring_check.h"
#include "theory/arith/nl/ext/monomial_bounds_check.h"
#include "theory/arith/nl/ext_theory_callback.h"
#include "theory/arith/nl/iand_solver.h"
#include "theory/arith/nl/icp/icp_solver.h"
-#include "theory/arith/nl/nl_lemma_utils.h"
#include "theory/arith/nl/nl_model.h"
#include "theory/arith/nl/stats.h"
#include "theory/arith/nl/strategy.h"
#include "theory/arith/nl/transcendental/transcendental_solver.h"
#include "theory/ext_theory.h"
-#include "theory/uf/equality_engine.h"
namespace CVC4 {
namespace theory {
+namespace eq {
+ class EqualityEngine;
+}
namespace arith {
+
+class InferenceManager;
+
namespace nl {
+class NlLemma;
+
/** Non-linear extension class
*
* This class implements model-based refinement schemes
#include "expr/node.h"
#include "expr/node_manager_attributes.h"
-#include "util/integer.h"
+#include "theory/arith/bound_inference.h"
#include "util/poly_util.h"
-#include "util/rational.h"
namespace CVC4 {
namespace theory {
#include <poly/polyxx.h>
-#include <iostream>
+#include <cstddef>
+#include <map>
+#include <utility>
#include "expr/node.h"
-#include "theory/arith/bound_inference.h"
-#include "util/real_algebraic_number.h"
namespace CVC4 {
namespace theory {
namespace arith {
+
+class BoundInference;
+
namespace nl {
/** Bijective mapping between CVC4 variables and poly variables. */
#ifndef CVC4__THEORY__ARITH__NL__STATS_H
#define CVC4__THEORY__ARITH__NL__STATS_H
-#include "expr/kind.h"
-#include "theory/inference_id.h"
#include "util/statistics_registry.h"
namespace CVC4 {
#define CVC4__THEORY__ARITH__NL__STRATEGY_H
#include <iosfwd>
-#include <map>
#include <vector>
namespace CVC4 {
#include "expr/node_algorithm.h"
#include "expr/node_builder.h"
+#include "expr/proof.h"
#include "options/arith_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/arith_utilities.h"
+#include "theory/arith/inference_manager.h"
#include "theory/rewriter.h"
namespace CVC4 {
#include <vector>
#include "expr/node.h"
-#include "theory/arith/inference_manager.h"
-#include "theory/arith/nl/nl_model.h"
#include "theory/arith/nl/transcendental/transcendental_state.h"
namespace CVC4 {
#include "expr/node_algorithm.h"
#include "expr/node_builder.h"
+#include "expr/proof.h"
#include "options/arith_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/arith_utilities.h"
#include <vector>
#include "expr/node.h"
-#include "theory/arith/inference_manager.h"
-#include "theory/arith/nl/nl_model.h"
#include "theory/arith/nl/transcendental/transcendental_state.h"
namespace CVC4 {
#include "theory/arith/nl/transcendental/taylor_generator.h"
#include "theory/arith/arith_utilities.h"
+#include "theory/arith/nl/nl_model.h"
#include "theory/rewriter.h"
namespace CVC4 {
#define CVC4__THEORY__ARITH__NL__TRANSCENDENTAL__TAYLOR_GENERATOR_H
#include "expr/node.h"
-#include "theory/arith/nl/nl_model.h"
namespace CVC4 {
namespace theory {
namespace arith {
namespace nl {
+
+class NlModel;
+
namespace transcendental {
class TaylorGenerator
#include "options/arith_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/arith/arith_utilities.h"
+#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/transcendental/taylor_generator.h"
#include "theory/rewriter.h"
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
**
- ** \brief [[ Add one-line brief description here ]]
- **
- ** [[ Add lengthier description here ]]
- ** \todo document this file
- **/
-
-/********************* */
-/*! \file transcendental_solver.h
- ** \verbatim
- ** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
- ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2020 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.\endverbatim
- **
** \brief Solving for handling transcendental functions.
**/
#ifndef CVC4__THEORY__ARITH__NL__TRANSCENDENTAL__TRANSCENDENTAL_SOLVER_H
#define CVC4__THEORY__ARITH__NL__TRANSCENDENTAL__TRANSCENDENTAL_SOLVER_H
-#include <map>
-#include <unordered_map>
-#include <unordered_set>
#include <vector>
#include "expr/node.h"
-#include "theory/arith/inference_manager.h"
-#include "theory/arith/nl/nl_model.h"
#include "theory/arith/nl/transcendental/exponential_solver.h"
#include "theory/arith/nl/transcendental/sine_solver.h"
#include "theory/arith/nl/transcendental/transcendental_state.h"
namespace CVC4 {
namespace theory {
namespace arith {
+
+class InferenceManager;
+
namespace nl {
+
+class NlModel;
+
namespace transcendental {
/** Transcendental solver class
#include "theory/arith/nl/transcendental/transcendental_state.h"
+#include "expr/proof.h"
#include "theory/arith/arith_utilities.h"
#include "theory/arith/nl/transcendental/taylor_generator.h"
+#include "theory/rewriter.h"
namespace CVC4 {
namespace theory {
#include "theory/arith/nl/transcendental/taylor_generator.h"
namespace CVC4 {
+class CDProof;
namespace theory {
namespace arith {
namespace nl {
#include "base/output.h"
#include "options/arith_options.h"
#include "theory/arith/constraint.h"
+#include "theory/arith/error_set.h"
#include "theory/arith/simplex.h"
#include "theory/arith/arithvar.h"
#include "theory/arith/delta_rational.h"
-#include "theory/arith/error_set.h"
#include "theory/arith/linear_equality.h"
#include "theory/arith/partial_model.h"
#include "theory/arith/tableau.h"
namespace theory {
namespace arith {
+class ErrorSet;
+
class SimplexDecisionProcedure {
protected:
typedef std::vector< std::pair<ArithVar, int> > AVIntPairVec;
#include "options/arith_options.h"
#include "smt/smt_statistics_registry.h"
#include "theory/arith/constraint.h"
+#include "theory/arith/error_set.h"
#include "util/statistics_registry.h"
using namespace std;
#include "theory/arith/arith_rewriter.h"
#include "theory/arith/arith_state.h"
#include "theory/arith/inference_manager.h"
-#include "theory/arith/nl/nonlinear_extension.h"
#include "theory/arith/operator_elim.h"
#include "theory/theory.h"
namespace CVC4 {
namespace theory {
namespace arith {
+namespace nl {
+class NonlinearExtension;
+}
class TheoryArithPrivate;
#include "theory/quantifiers/fmf/bounded_integers.h"
#include "theory/rewriter.h"
#include "theory/theory_model.h"
+#include "theory/trust_substitutions.h"
#include "theory/valuation.h"
#include "util/dense_map.h"
#include "util/integer.h"
#include "theory/arith/delta_rational.h"
#include "theory/arith/dio_solver.h"
#include "theory/arith/dual_simplex.h"
+#include "theory/arith/error_set.h"
#include "theory/arith/fc_simplex.h"
#include "theory/arith/infer_bounds.h"
#include "theory/arith/linear_equality.h"
#include "options/smt_options.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
#include "theory/uf/equality_engine.h"
using namespace CVC4::kind;
#include "smt/smt_statistics_registry.h"
#include "theory/arrays/skolem_cache.h"
#include "theory/arrays/theory_arrays_rewriter.h"
+#include "theory/decision_manager.h"
#include "theory/rewriter.h"
#include "theory/theory_model.h"
+#include "theory/trust_substitutions.h"
#include "theory/valuation.h"
using namespace std;
#include "theory/arrays/inference_manager.h"
#include "theory/arrays/proof_checker.h"
#include "theory/arrays/theory_arrays_rewriter.h"
+#include "theory/decision_strategy.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
#include "theory/uf/equality_engine.h"
#include "theory/uf/proof_equality_engine.h"
#include "util/statistics_registry.h"
#include "theory/bags/bag_solver.h"
#include "theory/bags/inference_generator.h"
+#include "theory/uf/equality_engine_iterator.h"
using namespace std;
using namespace CVC4::context;
#include "theory/bags/rewrites.h"
#include "theory/rewriter.h"
+#include "util/statistics_registry.h"
namespace CVC4 {
namespace theory {
#include <vector>
#include "expr/node_algorithm.h"
+#include "expr/proof_node_manager.h"
#include "theory/booleans/proof_circuit_propagator.h"
#include "util/utility.h"
#include "theory/booleans/theory_bool_rewriter.h"
#include "theory/substitutions.h"
#include "theory/theory.h"
+#include "theory/trust_substitutions.h"
#include "theory/valuation.h"
#include "util/hash.h"
#include "theory/bv/bitblast/simple_bitblaster.h"
#include "theory/theory_model.h"
+#include "theory/theory_state.h"
namespace CVC4 {
namespace theory {
#include <unordered_map>
#include <unordered_set>
+#include "context/cdhashset.h"
#include "context/cdqueue.h"
#include "context/context.h"
#include "theory/theory.h"
#include "theory/bv/theory_bv_rewriter.h"
#include "theory/bv/theory_bv_utils.h"
#include "theory/theory_model.h"
+#include "theory/trust_substitutions.h"
using namespace CVC4::theory::bv::utils;
#include "theory/bv/bv_solver_lazy.h"
#include "theory/bv/bv_solver_simple.h"
#include "theory/bv/theory_bv_utils.h"
+#include "theory/ee_setup_info.h"
namespace CVC4 {
namespace theory {
#include "theory/bv/theory_bv_rewriter.h"
#include "theory/theory.h"
#include "theory/theory_eq_notify.h"
+#include "theory/theory_state.h"
namespace CVC4 {
namespace theory {
#include <set>
-#include "expr/kind.h" // For TheoryId.
#include "expr/node.h"
+#include "theory/theory_id.h"
namespace CVC4 {
namespace theory {
#include "theory/datatypes/datatypes_rewriter.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "expr/sygus_datatype.h"
#include "options/datatypes_options.h"
#include "theory/datatypes/infer_proof_cons.h"
+#include "expr/proof.h"
#include "theory/datatypes/theory_datatypes_utils.h"
#include "theory/rewriter.h"
#include "expr/dtype.h"
#include "options/datatypes_options.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/eager_proof_generator.h"
+#include "theory/rewriter.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
+#include "theory/trust_substitutions.h"
using namespace CVC4::kind;
namespace CVC4 {
namespace theory {
+
+class EagerProofGenerator;
+
namespace datatypes {
/**
#include "theory/datatypes/proof_checker.h"
+#include "expr/dtype_cons.h"
#include "theory/datatypes/theory_datatypes_utils.h"
#include "theory/rewriter.h"
#include "theory/datatypes/sygus_datatype_utils.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "expr/sygus_datatype.h"
#include "smt/smt_engine.h"
#include "theory/datatypes/sygus_extension.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_manager.h"
#include "expr/sygus_datatype.h"
#include "options/base_options.h"
#include "theory/datatypes/sygus_simple_sym.h"
+#include "expr/dtype_cons.h"
#include "theory/quantifiers/term_util.h"
using namespace std;
#include "base/check.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/kind.h"
+#include "expr/proof_node_manager.h"
#include "options/datatypes_options.h"
#include "options/quantifiers_options.h"
#include "options/smt_options.h"
#define CVC4__THEORY__DATATYPES__THEORY_DATATYPES_TYPE_RULES_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/theory_datatypes_utils.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
using namespace CVC4;
using namespace CVC4::kind;
** Enumerators for datatypes.
**/
+#include "expr/dtype_cons.h"
#include "theory/datatypes/type_enumerator.h"
#include "theory/datatypes/datatypes_rewriter.h"
#include "theory/datatypes/theory_datatypes_utils.h"
#include "base/check.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/output_channel.h"
#include "theory/quantifiers_engine.h"
+#include "theory/rewriter.h"
#include "theory/substitutions.h"
using namespace std;
#include <unordered_set>
#include <vector>
+#include "base/configuration.h"
#include "options/fp_options.h"
+#include "smt/logic_exception.h"
#include "theory/fp/fp_converter.h"
#include "theory/fp/theory_fp_rewriter.h"
+#include "theory/output_channel.h"
#include "theory/rewriter.h"
#include "theory/theory_model.h"
#include <string>
#include <utility>
+#include "context/cdhashset.h"
#include "context/cdo.h"
#include "theory/fp/theory_fp_rewriter.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
#include "theory/uf/equality_engine.h"
namespace CVC4 {
#include "theory/rewriter.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
using namespace CVC4::kind;
#include "options/theory_options.h"
#include "prop/prop_engine.h"
#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/fmf/model_builder.h"
#include "theory/theory_engine.h"
namespace CVC4 {
#include "theory/quantifiers/cegqi/ceg_dt_instantiator.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "theory/datatypes/theory_datatypes_utils.h"
#include "theory/quantifiers/cegqi/ceg_bv_instantiator.h"
#include "theory/quantifiers/cegqi/ceg_dt_instantiator.h"
+#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
#include "theory/arith/arith_msum.h"
#include "expr/node_algorithm.h"
#include "theory/arith/arith_msum.h"
#include "theory/quantifiers/quantifiers_inference_manager.h"
+#include "theory/rewriter.h"
using namespace CVC4::kind;
#include "theory/quantifiers/ematching/candidate_generator.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "options/quantifiers_options.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "theory/quantifiers/inst_match.h"
#include "theory/quantifiers/instantiate.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "theory/quantifiers/ematching/ho_trigger.h"
#include "theory/quantifiers/instantiate.h"
+#include "theory/quantifiers/quantifiers_inference_manager.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "theory/uf/theory_uf_rewriter.h"
#include "util/hash.h"
#include "theory/quantifiers/ematching/inst_match_generator.h"
+#include "expr/dtype_cons.h"
#include "options/quantifiers_options.h"
#include "theory/datatypes/theory_datatypes_utils.h"
#include "theory/quantifiers/ematching/candidate_generator.h"
#include "theory/quantifiers/ematching/inst_match_generator_multi.h"
#include "theory/quantifiers/quantifiers_state.h"
+#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
+#include "theory/uf/equality_engine_iterator.h"
using namespace CVC4::kind;
#include "theory/quantifiers/ematching/inst_match_generator_multi_linear.h"
#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/ematching/trigger_trie.h"
+#include "theory/quantifiers/term_util.h"
using namespace CVC4::kind;
#include "theory/quantifiers/ematching/inst_match_generator_simple.h"
#include "theory/quantifiers/ematching/trigger_term_info.h"
+#include "theory/quantifiers/ematching/trigger_trie.h"
+#include "theory/quantifiers/instantiate.h"
+#include "theory/quantifiers/quantifiers_state.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
using namespace CVC4::kind;
#include "theory/quantifiers/ematching/pattern_term_selector.h"
#include "theory/quantifiers/quant_relevance.h"
+#include "theory/quantifiers/quantifiers_inference_manager.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers_engine.h"
#include "util/random.h"
#include "theory/quantifiers/ematching/inst_strategy_e_matching_user.h"
#include "theory/quantifiers/ematching/pattern_term_selector.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers_engine.h"
using namespace CVC4::kind;
#include "theory/arith/arith_msum.h"
#include "theory/quantifiers/quant_util.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
using namespace CVC4::kind;
#include "theory/quantifiers/ematching/inst_match_generator_multi_linear.h"
#include "theory/quantifiers/ematching/inst_match_generator_simple.h"
#include "theory/quantifiers/ematching/pattern_term_selector.h"
+#include "theory/quantifiers/ematching/trigger_trie.h"
#include "theory/quantifiers/instantiate.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/quantifiers_inference_manager.h"
#include "theory/quantifiers/quantifiers_state.h"
+#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
using namespace CVC4::kind;
**/
#include "theory/quantifiers/ematching/var_match_generator.h"
+#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
+#include "theory/rewriter.h"
using namespace CVC4::kind;
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
#include "theory/smt_engine_subsolver.h"
using namespace std;
#include "theory/quantifiers/fmf/bounded_integers.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/datatypes/theory_datatypes_utils.h"
+#include "theory/decision_manager.h"
#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/fmf/model_engine.h"
#include "theory/quantifiers/term_enumeration.h"
#include "context/cdhashmap.h"
#include "context/context.h"
#include "expr/attribute.h"
+#include "theory/decision_strategy.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/inst_match.h"
#include "theory/quantifiers/instantiate.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers_engine.h"
#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers_engine.h"
+#include "theory/uf/equality_engine_iterator.h"
using namespace CVC4::context;
#include "theory/quantifiers/instantiate.h"
#include "expr/node_algorithm.h"
+#include "expr/proof_node_manager.h"
#include "options/printer_options.h"
#include "options/quantifiers_options.h"
#include "options/smt_options.h"
#include <map>
+#include "context/cdhashset.h"
+#include "expr/lazy_proof.h"
#include "expr/node.h"
#include "expr/proof.h"
#include "theory/quantifiers/inst_match_trie.h"
#include "theory/quantifiers/quant_conflict_find.h"
+#include "base/configuration.h"
#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
#include "options/theory_options.h"
#include "theory/quantifiers/quant_rep_bound_ext.h"
#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/first_order_model.h"
using namespace CVC4::kind;
**/
#include "theory/quantifiers/quant_split.h"
+
+#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers_engine.h"
#include "theory/quantifiers/first_order_model.h"
#include "expr/bound_var_manager.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/quantifiers/skolemize.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
#include "theory/strings/theory_strings_utils.h"
using namespace std;
#include "theory/quantifiers/quantifiers_state.h"
#include "options/quantifiers_options.h"
+#include "theory/uf/equality_engine_iterator.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/relevant_domain.h"
#include "theory/arith/arith_msum.h"
#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "theory/quantifiers/skolemize.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/skolem_manager.h"
#include "options/quantifiers_options.h"
#include "options/smt_options.h"
#include "theory/quantifiers/sygus/ce_guided_single_inv_sol.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
#include "smt/command.h"
#include "theory/quantifiers/sygus/cegis_core_connective.h"
+#include "expr/dtype_cons.h"
#include "options/base_options.h"
#include "printer/printer.h"
#include "proof/unsat_core.h"
#include <map>
#include <vector>
+#include "theory/decision_strategy.h"
#include "theory/quantifiers/sygus/cegis.h"
#include "theory/quantifiers/sygus/sygus_unif_rl.h"
#include "theory/quantifiers/sygus/enum_stream_substitution.h"
+#include "expr/dtype_cons.h"
#include "options/base_options.h"
#include "options/datatypes_options.h"
#include "options/quantifiers_options.h"
#include "theory/quantifiers/sygus/sygus_enumerator.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "options/datatypes_options.h"
#include "options/quantifiers_options.h"
#include "theory/quantifiers/sygus/sygus_eval_unfold.h"
+#include "expr/dtype_cons.h"
#include "expr/sygus_datatype.h"
#include "options/quantifiers_options.h"
#include "theory/datatypes/sygus_datatype_utils.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
+#include "theory/rewriter.h"
using namespace std;
using namespace CVC4::kind;
#include "theory/quantifiers/sygus/sygus_explain.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "theory/datatypes/theory_datatypes_utils.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include <stack>
+#include "expr/dtype_cons.h"
#include "options/quantifiers_options.h"
#include "theory/bv/theory_bv_utils.h"
#include "theory/datatypes/sygus_datatype_utils.h"
#include "theory/quantifiers/sygus/sygus_grammar_norm.h"
+#include "expr/dtype_cons.h"
#include "expr/node_manager_attributes.h" // for VarNameAttr
#include "options/quantifiers_options.h"
#include "smt/smt_engine.h"
#include "theory/quantifiers/sygus/sygus_grammar_red.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/sygus_datatype.h"
#include "options/quantifiers_options.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "options/quantifiers_options.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
using namespace CVC4::kind;
using namespace std;
#include "theory/quantifiers/sygus/sygus_repair_const.h"
#include "api/cvc4cpp.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "options/base_options.h"
#include "options/quantifiers_options.h"
#include "theory/quantifiers/sygus/sygus_unif_strat.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "theory/datatypes/theory_datatypes_utils.h"
#include "theory/quantifiers/sygus/sygus_eval_unfold.h"
#include "theory/quantifiers/sygus/sygus_unif.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
+#include "theory/rewriter.h"
using namespace std;
using namespace CVC4::kind;
**/
#include "theory/quantifiers/sygus/synth_conjecture.h"
+#include "base/configuration.h"
#include "options/base_options.h"
#include "options/datatypes_options.h"
#include "options/quantifiers_options.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "base/check.h"
+#include "expr/dtype_cons.h"
#include "expr/sygus_datatype.h"
#include "options/base_options.h"
#include "options/datatypes_options.h"
#include "theory/arith/arith_msum.h"
#include "theory/datatypes/sygus_datatype_utils.h"
#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/quantifiers_inference_manager.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "base/check.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/sygus_datatype.h"
#include "theory/datatypes/sygus_datatype_utils.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include <unordered_set>
#include "expr/node_algorithm.h"
+#include "options/quantifiers_options.h"
#include "theory/bv/theory_bv_utils.h"
#include "theory/datatypes/sygus_datatype_utils.h"
+#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/sygus/sygus_enumerator.h"
#include "theory/quantifiers/sygus/sygus_grammar_cons.h"
#include "theory/quantifiers/sygus/synth_engine.h"
+#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
namespace CVC4 {
#include <unordered_set>
#include "context/cdhashset.h"
+#include "theory/decision_strategy.h"
#include "theory/quantifiers/quant_module.h"
namespace CVC4 {
#include "theory/quantifiers/sygus_sampler.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "options/base_options.h"
#include "options/quantifiers_options.h"
#include "options/uf_options.h"
#include "theory/quantifiers/ematching/trigger_term_info.h"
#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/quantifiers_inference_manager.h"
+#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
#include <map>
#include <unordered_set>
+#include "context/cdhashmap.h"
+#include "context/cdhashset.h"
#include "expr/attribute.h"
#include "expr/node_trie.h"
#include "theory/quantifiers/quant_util.h"
#include "theory/quantifiers/term_enumeration.h"
#include "theory/quantifiers_engine.h"
#include "theory/strings/word.h"
+#include "theory/rewriter.h"
using namespace std;
using namespace CVC4::kind;
#define CVC4__THEORY__QUANTIFIERS__TERM_UTIL_H
#include <map>
-#include <unordered_set>
#include "expr/attribute.h"
#include "expr/node.h"
namespace quantifiers {
-class TermDatabase;
-
// TODO : #1216 split this class, most of the functions in this class should be dispersed to where they are used.
class TermUtil
{
#include "options/uf_options.h"
#include "smt/smt_engine_scope.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/quantifiers/ematching/trigger_trie.h"
+#include "theory/quantifiers/equality_query.h"
+#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/fmf/first_order_model_fmc.h"
#include "theory/quantifiers/fmf/full_model_check.h"
+#include "theory/quantifiers/fmf/model_builder.h"
+#include "theory/quantifiers/quantifiers_inference_manager.h"
#include "theory/quantifiers/quantifiers_modules.h"
#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/quantifiers/quantifiers_state.h"
+#include "theory/quantifiers/quant_module.h"
+#include "theory/quantifiers/skolemize.h"
+#include "theory/quantifiers/sygus/term_database_sygus.h"
+#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers/term_enumeration.h"
#include "theory/theory_engine.h"
#include "theory/uf/equality_engine.h"
#include <map>
#include <unordered_map>
+#include "context/cdhashmap.h"
#include "context/cdhashset.h"
#include "context/cdlist.h"
-#include "expr/attribute.h"
-#include "theory/quantifiers/ematching/trigger_trie.h"
-#include "theory/quantifiers/equality_query.h"
-#include "theory/quantifiers/first_order_model.h"
-#include "theory/quantifiers/fmf/model_builder.h"
-#include "theory/quantifiers/instantiate.h"
-#include "theory/quantifiers/quant_module.h"
#include "theory/quantifiers/quant_util.h"
-#include "theory/quantifiers/quantifiers_inference_manager.h"
-#include "theory/quantifiers/quantifiers_state.h"
-#include "theory/quantifiers/skolemize.h"
-#include "theory/quantifiers/sygus/term_database_sygus.h"
-#include "theory/quantifiers/term_database.h"
-#include "theory/quantifiers/term_enumeration.h"
-#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers/quantifiers_registry.h"
#include "util/statistics_registry.h"
namespace CVC4 {
namespace theory {
class DecisionManager;
+class QuantifiersModule;
+class RepSetIterator;
+namespace inst {
+class TriggerTrie;
+}
namespace quantifiers {
+class EqualityQueryQuantifiersEngine;
+class FirstOrderModel;
+class Instantiate;
+class QModelBuilder;
+class QuantifiersInferenceManager;
class QuantifiersModules;
+class QuantifiersState;
+class Skolemize;
+class TermDb;
+class TermDbSygus;
+class TermEnumeration;
}
// TODO: organize this more/review this, github issue #1163
#include "theory/rewriter.h"
+#include "expr/term_conversion_proof_generator.h"
#include "options/theory_options.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#pragma once
#include "expr/node.h"
-#include "expr/term_conversion_proof_generator.h"
#include "theory/theory_rewriter.h"
-#include "theory/trust_node.h"
-#include "util/unsafe_interrupt_exception.h"
namespace CVC4 {
+
+class TConvProofGenerator;
+class ProofNodeManager;
+
namespace theory {
+class TrustNode;
+
namespace builtin {
class BuiltinProofRuleChecker;
}
-class RewriterInitializer;
-
/**
* The rewrite environment holds everything that the individual rewrites have
* access to.
#include "options/sep_options.h"
#include "options/smt_options.h"
#include "smt/logic_exception.h"
+#include "theory/decision_manager.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "context/cdhashset.h"
#include "context/cdlist.h"
#include "context/cdqueue.h"
+#include "theory/decision_strategy.h"
#include "theory/inference_manager_buffered.h"
#include "theory/sep/theory_sep_rewriter.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
#include "theory/uf/equality_engine.h"
#include "util/statistics_registry.h"
#define SRC_THEORY_SETS_RELS_UTILS_H_
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/node.h"
namespace CVC4 {
#include "theory/sets/theory_sets_private.h"
#include "theory/sets/theory_sets_rewriter.h"
#include "theory/theory_model.h"
+#include "theory/trust_substitutions.h"
using namespace CVC4::kind;
#include "theory/sets/theory_sets_rewriter.h"
#include "expr/attribute.h"
+#include "expr/dtype_cons.h"
#include "options/sets_options.h"
#include "theory/sets/normal_form.h"
#include "theory/sets/rels_utils.h"
#include "theory/strings/core_solver.h"
+#include "base/configuration.h"
#include "options/strings_options.h"
#include "theory/strings/sequences_rewriter.h"
#include "theory/strings/strings_entail.h"
#include "theory/strings/regexp_elim.h"
+#include "expr/proof_node_manager.h"
#include "options/strings_options.h"
#include "theory/rewriter.h"
#include "theory/strings/regexp_entail.h"
#include "options/strings_options.h"
#include "options/theory_options.h"
#include "smt/logic_exception.h"
+#include "theory/decision_manager.h"
#include "theory/ext_theory.h"
#include "theory/rewriter.h"
#include "theory/strings/theory_strings_utils.h"
#include "theory/term_registration_visitor.h"
+#include "base/configuration.h"
#include "options/quantifiers_options.h"
#include "theory/theory_engine.h"
#include "options/smt_options.h"
#include "options/theory_options.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/ee_setup_info.h"
#include "theory/ext_theory.h"
+#include "theory/output_channel.h"
#include "theory/quantifiers_engine.h"
#include "theory/substitutions.h"
+#include "theory/theory_inference_manager.h"
+#include "theory/theory_model.h"
#include "theory/theory_rewriter.h"
+#include "theory/theory_state.h"
+#include "theory/trust_substitutions.h"
using namespace std;
#define CVC4__THEORY__THEORY_H
#include <iosfwd>
-#include <map>
#include <set>
#include <string>
#include <unordered_set>
-#include "context/cdhashset.h"
#include "context/cdlist.h"
#include "context/cdo.h"
#include "context/context.h"
#include "expr/node.h"
-#include "options/options.h"
#include "options/theory_options.h"
-#include "smt/logic_request.h"
#include "theory/assertion.h"
#include "theory/care_graph.h"
-#include "theory/decision_manager.h"
-#include "theory/ee_setup_info.h"
#include "theory/logic_info.h"
-#include "theory/output_channel.h"
#include "theory/theory_id.h"
-#include "theory/theory_inference_manager.h"
-#include "theory/theory_rewriter.h"
-#include "theory/theory_state.h"
#include "theory/trust_node.h"
-#include "theory/trust_substitutions.h"
#include "theory/valuation.h"
#include "util/statistics_registry.h"
namespace CVC4 {
-class TheoryEngine;
class ProofNodeManager;
+class TheoryEngine;
namespace theory {
+class DecisionManager;
+struct EeSetupInfo;
+class OutputChannel;
class QuantifiersEngine;
+class TheoryInferenceManager;
class TheoryModel;
-class SubstitutionMap;
class TheoryRewriter;
-
-namespace rrinst {
- class CandidateGenerator;
-}/* CVC4::theory::rrinst namespace */
+class TheoryState;
+class TrustSubstitutionMap;
namespace eq {
class EqualityEngine;
#include "theory/theory_inference_manager.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/output_channel.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
#include "theory/uf/equality_engine.h"
+#include "theory/uf/proof_equality_engine.h"
using namespace CVC4::kind;
#include "expr/node.h"
#include "theory/inference_id.h"
#include "theory/output_channel.h"
-#include "theory/theory_state.h"
#include "theory/trust_node.h"
-#include "theory/uf/proof_equality_engine.h"
+#include "util/statistics_registry.h"
namespace CVC4 {
namespace theory {
class Theory;
+class TheoryState;
namespace eq {
class EqualityEngine;
+class ProofEqEngine;
}
/**
#include "theory/theory_model_builder.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "options/quantifiers_options.h"
#include "options/smt_options.h"
#include "options/theory_options.h"
#define CVC4__THEORY__TRUST_NODE_H
#include "expr/node.h"
-#include "expr/proof_node.h"
namespace CVC4 {
class ProofGenerator;
+class ProofNode;
namespace theory {
#include "theory/uf/eq_proof.h"
+#include "base/configuration.h"
#include "expr/proof.h"
#include "options/uf_options.h"
#include "expr/node_trie.h"
#include "theory/theory.h"
#include "theory/theory_eq_notify.h"
+#include "theory/theory_state.h"
#include "theory/uf/equality_engine.h"
#include "theory/uf/proof_checker.h"
#include "theory/uf/proof_equality_engine.h"
#include "util/bitvector.h"
+#include "base/exception.h"
+
namespace CVC4 {
unsigned BitVector::getSize() const { return d_size; }
#include <iosfwd>
-#include "base/exception.h"
#include "util/integer.h"
namespace CVC4 {
#include "util/cardinality.h"
+#include <ostream>
+
#include "base/check.h"
+#include "base/exception.h"
namespace CVC4 {
#ifndef CVC4__CARDINALITY_H
#define CVC4__CARDINALITY_H
-#include <iostream>
-#include <utility>
+#include <iosfwd>
-#include "base/exception.h"
#include "util/integer.h"
namespace CVC4 {
#define CVC4__DIVISIBLE_H
#include <iosfwd>
+#include <ostream>
+#include <stddef.h>
-#include "base/exception.h"
#include "util/integer.h"
namespace CVC4 {
**/
#include "util/ostream_util.h"
+#include <ostream>
+
namespace CVC4 {
StreamFormatScope::StreamFormatScope(std::ostream& out)
#define CVC4__UTIL__OSTREAM_UTIL_H
#include <ios>
-#include <ostream>
+#include <iosfwd>
namespace CVC4 {
**/
#include "util/resource_manager.h"
+#include <algorithm>
+#include <ostream>
+
#include "base/check.h"
+#include "base/listener.h"
#include "base/output.h"
+#include "options/options.h"
#include "options/smt_options.h"
#include "util/statistics_registry.h"
#ifndef CVC4__RESOURCE_MANAGER_H
#define CVC4__RESOURCE_MANAGER_H
-#include <sys/time.h>
-
+#include <stdint.h>
#include <chrono>
#include <memory>
-
-#include "base/exception.h"
-#include "base/listener.h"
-#include "options/options.h"
-#include "util/unsafe_interrupt_exception.h"
+#include <vector>
namespace CVC4 {
+class Listener;
+class Options;
class StatisticsRegistry;
/**
#include "util/statistics.h"
-#include <typeinfo>
-
#include "util/safe_print.h"
#include "util/statistics_registry.h" // for details about class Stat
#include <vector>
#include "base/exception.h"
-#include "lib/clock_gettime.h"
#include "util/safe_print.h"
#include "util/statistics.h"
#define CVC4__TUPLE_H
#include <iostream>
-#include <string>
#include <vector>
#include <utility>
#include <unistd.h>
#include <cstdlib>
-#include <iostream>
#include "base/check.h"
#include <algorithm>
#include <fstream>
-#include <functional>
#include <memory>
#include <string>
-#include <utility>
namespace CVC4 {
#include "api/cvc4cpp.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/expr_manager.h"
#include "expr/node.h"
#include "expr/node_builder.h"
#ifndef CVC4__TEST__UNIT__TEST_SMT_H
#define CVC4__TEST__UNIT__TEST_SMT_H
+#include "expr/dtype_cons.h"
#include "expr/node.h"
#include "expr/node_manager.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "test.h"
+#include "theory/output_channel.h"
+#include "theory/rewriter.h"
#include "theory/theory.h"
+#include "theory/theory_state.h"
#include "theory/valuation.h"
#include "util/resource_manager.h"
#include "util/unsafe_interrupt_exception.h"
** \brief Whitebox tests for theory Arithmetic.
**/
+#include <list>
#include <vector>
#include "context/context.h"
#include "api/cvc4cpp.h"
#include "expr/dtype.h"
+#include "expr/dtype_cons.h"
#include "expr/expr.h"
#include "expr/type_node.h"
#include "test_expr.h"