#include "theory/quantifiers/sygus/sygus_abduct.h"
#include "theory/quantifiers/sygus/synth_engine.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/rewriter.h"
#include "theory/sort_inference.h"
#include "theory/strings/theory_strings.h"
#include "theory/quantifiers/sygus/sygus_explain.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_model.h"
using namespace CVC4;
#include "theory/quantifiers/alpha_equivalence.h"
+#include "theory/quantifiers_engine.h"
+
using namespace CVC4;
using namespace std;
using namespace CVC4::theory;
#ifndef CVC4__ALPHA_EQUIVALENCE_H
#define CVC4__ALPHA_EQUIVALENCE_H
-
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
#include "expr/term_canonize.h"
#include "context/cdo.h"
#include "expr/node.h"
#include "expr/type_node.h"
+#include "theory/quantifiers/quant_util.h"
#include "theory/quantifiers/single_inv_partition.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#include "theory/arith/theory_arith.h"
#include "theory/arith/theory_arith_private.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "util/random.h"
using namespace std;
#include "options/quantifiers_options.h"
#include "theory/bv/theory_bv_utils.h"
#include "theory/quantifiers/cegqi/ceg_bv_instantiator_utils.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/rewriter.h"
#include "util/bitvector.h"
#include "util/random.h"
using namespace std;
using namespace CVC4::kind;
-using namespace CVC4::context;
namespace CVC4 {
namespace theory {
using namespace std;
using namespace CVC4::kind;
-using namespace CVC4::context;
namespace CVC4 {
namespace theory {
#include "options/quantifiers_options.h"
#include "theory/quantifiers/ematching/trigger.h"
#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
using namespace std;
using namespace CVC4::kind;
#include "options/quantifiers_options.h"
#include "smt/term_formula_removal.h"
#include "theory/arith/arith_msum.h"
-#include "theory/quantifiers/ematching/trigger.h"
#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/quant_epr.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/quantifiers_rewriter.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
+#include "theory/rewriter.h"
#include "theory/theory_engine.h"
using namespace std;
using namespace CVC4::kind;
-using namespace CVC4::context;
namespace CVC4 {
namespace theory {
return os;
}
+void TermProperties::composeProperty(TermProperties& p)
+{
+ if (p.d_coeff.isNull())
+ {
+ return;
+ }
+ if (d_coeff.isNull())
+ {
+ d_coeff = p.d_coeff;
+ }
+ else
+ {
+ d_coeff = NodeManager::currentNM()->mkNode(MULT, d_coeff, p.d_coeff);
+ d_coeff = Rewriter::rewrite(d_coeff);
+ }
+}
+
+// push the substitution pv_prop.getModifiedTerm(pv) -> n
+void SolvedForm::push_back(Node pv, Node n, TermProperties& pv_prop)
+{
+ d_vars.push_back(pv);
+ d_subs.push_back(n);
+ d_props.push_back(pv_prop);
+ if (pv_prop.isBasic())
+ {
+ return;
+ }
+ d_non_basic.push_back(pv);
+ // update theta value
+ Node new_theta = getTheta();
+ if (new_theta.isNull())
+ {
+ new_theta = pv_prop.d_coeff;
+ }
+ else
+ {
+ new_theta =
+ NodeManager::currentNM()->mkNode(MULT, new_theta, pv_prop.d_coeff);
+ new_theta = Rewriter::rewrite(new_theta);
+ }
+ d_theta.push_back(new_theta);
+}
+// pop the substitution pv_prop.getModifiedTerm(pv) -> n
+void SolvedForm::pop_back(Node pv, Node n, TermProperties& pv_prop)
+{
+ d_vars.pop_back();
+ d_subs.pop_back();
+ d_props.pop_back();
+ if (pv_prop.isBasic())
+ {
+ return;
+ }
+ d_non_basic.pop_back();
+ // update theta value
+ d_theta.pop_back();
+}
+
CegInstantiator::CegInstantiator(QuantifiersEngine* qe,
CegqiOutput* out,
bool use_vts_delta,
#ifndef CVC4__THEORY__QUANTIFIERS__CEG_INSTANTIATOR_H
#define CVC4__THEORY__QUANTIFIERS__CEG_INSTANTIATOR_H
-#include "theory/quantifiers_engine.h"
+#include <vector>
+
+#include "expr/node.h"
#include "util/statistics_registry.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
class CegqiOutput {
}
// compose property, should be such that:
// p.getModifiedTerm( this.getModifiedTerm( x ) ) = this_updated.getModifiedTerm( x )
- virtual void composeProperty( TermProperties& p ){
- if( !p.d_coeff.isNull() ){
- if( d_coeff.isNull() ){
- d_coeff = p.d_coeff;
- }else{
- d_coeff = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::MULT, d_coeff, p.d_coeff ) );
- }
- }
- }
+ virtual void composeProperty(TermProperties& p);
};
/** Solved form
// an example is for linear arithmetic, we store "substitution with coefficients".
std::vector<Node> d_non_basic;
// push the substitution pv_prop.getModifiedTerm(pv) -> n
- void push_back( Node pv, Node n, TermProperties& pv_prop ){
- d_vars.push_back( pv );
- d_subs.push_back( n );
- d_props.push_back( pv_prop );
- if( !pv_prop.isBasic() ){
- d_non_basic.push_back( pv );
- // update theta value
- Node new_theta = getTheta();
- if( new_theta.isNull() ){
- new_theta = pv_prop.d_coeff;
- }else{
- new_theta = NodeManager::currentNM()->mkNode( kind::MULT, new_theta, pv_prop.d_coeff );
- new_theta = Rewriter::rewrite( new_theta );
- }
- d_theta.push_back( new_theta );
- }
- }
+ void push_back(Node pv, Node n, TermProperties& pv_prop);
// pop the substitution pv_prop.getModifiedTerm(pv) -> n
- void pop_back( Node pv, Node n, TermProperties& pv_prop ){
- d_vars.pop_back();
- d_subs.pop_back();
- d_props.pop_back();
- if( !pv_prop.isBasic() ){
- d_non_basic.pop_back();
- // update theta value
- d_theta.pop_back();
- }
- }
+ void pop_back(Node pv, Node n, TermProperties& pv_prop);
// is this solved form empty?
bool empty() { return d_vars.empty(); }
public:
#include "theory/quantifiers/quantifiers_rewriter.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace std;
#include "theory/decision_manager.h"
#include "theory/quantifiers/cegqi/ceg_instantiator.h"
+#include "theory/quantifiers/quant_util.h"
#include "util/statistics_registry.h"
namespace CVC4 {
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_enumeration.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
#include "util/random.h"
#include "context/cdhashmap.h"
#include "expr/node_trie.h"
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
#include "theory/type_enumerator.h"
namespace CVC4 {
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
#include "util/random.h"
#include "context/context_mm.h"
#include "theory/quantifiers/ematching/instantiation_engine.h"
#include "theory/quantifiers/ematching/trigger.h"
-#include "theory/quantifiers_engine.h"
#include "util/statistics_registry.h"
#include "options/quantifiers_options.h"
#include "theory/quantifiers/ematching/instantiation_engine.h"
#include "options/quantifiers_options.h"
-#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/ematching/inst_strategy_e_matching.h"
+#include "theory/quantifiers/ematching/trigger.h"
+#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
-#include "theory/quantifiers/ematching/trigger.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace std;
#ifndef CVC4__THEORY__QUANTIFIERS__INSTANTIATION_ENGINE_H
#define CVC4__THEORY__QUANTIFIERS__INSTANTIATION_ENGINE_H
-#include <memory>
+#include <vector>
-#include "theory/quantifiers_engine.h"
-#include "theory/quantifiers/theory_quantifiers.h"
+#include "theory/quantifiers/quant_util.h"
namespace CVC4 {
namespace theory {
/** auto gen triggers; only kept for destructor cleanup */
std::unique_ptr<InstStrategyAutoGenTriggers> d_i_ag;
- typedef context::CDHashMap<Node, bool, NodeHashFunction> BoolMap;
/** current processing quantified formulas */
std::vector<Node> d_quants;
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
#include "theory/uf/equality_engine.h"
#include "context/context.h"
#include "expr/node.h"
#include "theory/quantifiers/quant_util.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/query_generator.h"
#include "theory/quantifiers/solution_filter.h"
#include "theory/quantifiers/sygus_sampler.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
/** ExpressionMinerManager
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_enumeration.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
using namespace std;
using namespace CVC4::kind;
#define CVC4__FIRST_ORDER_MODEL_H
#include "expr/attribute.h"
-#include "theory/quantifiers_engine.h"
#include "theory/theory_model.h"
#include "theory/uf/theory_uf_model.h"
#include "theory/quantifiers/fmf/model_engine.h"
#include "theory/quantifiers/term_enumeration.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace CVC4;
#ifndef CVC4__BOUNDED_INTEGERS_H
#define CVC4__BOUNDED_INTEGERS_H
-
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
#include "context/context.h"
#include "context/context_mm.h"
**/
#include "theory/quantifiers/fmf/full_model_check.h"
+
#include "options/quantifiers_options.h"
#include "options/theory_options.h"
#include "options/uf_options.h"
#include "theory/quantifiers/instantiate.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
using namespace std;
using namespace CVC4;
#include "theory/quantifiers/fmf/model_builder.h"
#include "options/quantifiers_options.h"
+#include "theory/quantifiers/ematching/trigger.h"
#include "theory/quantifiers/first_order_model.h"
-#include "theory/quantifiers/instantiate.h"
#include "theory/quantifiers/fmf/model_engine.h"
+#include "theory/quantifiers/instantiate.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
-#include "theory/quantifiers/ematching/trigger.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
#include "theory/uf/equality_engine.h"
#include "theory/uf/theory_uf.h"
#ifndef CVC4__THEORY__QUANTIFIERS__MODEL_BUILDER_H
#define CVC4__THEORY__QUANTIFIERS__MODEL_BUILDER_H
-#include "theory/quantifiers_engine.h"
+#include "expr/node.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/inst_match.h"
#include "theory/theory_model_builder.h"
-#include "theory/uf/theory_uf_model.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
#include "theory/uf/equality_engine.h"
#include "theory/uf/theory_uf.h"
#ifndef CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H
#define CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H
-#include "theory/quantifiers_engine.h"
#include "theory/quantifiers/fmf/model_builder.h"
+#include "theory/quantifiers/quant_util.h"
#include "theory/theory_model.h"
namespace CVC4 {
#include "theory/quantifiers/inst_propagator.h"
#include "theory/quantifiers/instantiate.h"
#include "theory/quantifiers/term_database.h"
+#include "theory/quantifiers_engine.h"
#include "theory/rewriter.h"
using namespace CVC4;
#include "expr/node_trie.h"
#include "expr/type_node.h"
#include "theory/quantifiers/instantiate.h"
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/relevant_domain.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
namespace CVC4 {
#include "context/context.h"
#include "context/context_mm.h"
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
namespace CVC4 {
namespace theory {
#include "options/quantifiers_options.h"
#include "smt/smt_statistics_registry.h"
-#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/cegqi/inst_strategy_cegqi.h"
+#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/quantifiers_rewriter.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_enumeration.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
using namespace CVC4::kind;
using namespace CVC4::context;
#include "expr/node.h"
#include "theory/quantifiers/inst_match_trie.h"
#include "theory/quantifiers/quant_util.h"
-#include "theory/quantifiers_engine.h"
#include "util/statistics_registry.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
class TermDb;
#include "context/cdo.h"
#include "expr/node_trie.h"
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/quant_conflict_find.h"
-#include <vector>
-
#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
#include "smt/smt_statistics_registry.h"
#include "theory/quantifiers/quant_util.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace CVC4::kind;
#include "context/cdhashmap.h"
#include "context/cdlist.h"
#include "expr/node_trie.h"
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
namespace CVC4 {
namespace theory {
#ifndef CVC4__THEORY__QUANT_SPLIT_H
#define CVC4__THEORY__QUANT_SPLIT_H
-#include "theory/quantifiers_engine.h"
#include "context/cdo.h"
+#include "theory/quantifiers/quant_util.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
class QuantDSplit : public QuantifiersModule {
#define CVC4__THEORY__QUANTIFIERS__QUANTIFIERS_REWRITER_H
#include "theory/rewriter.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/rewrite_engine.h"
#include "options/quantifiers_options.h"
-#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/ematching/inst_match_generator.h"
-#include "theory/quantifiers/instantiate.h"
+#include "theory/quantifiers/first_order_model.h"
#include "theory/quantifiers/fmf/model_engine.h"
+#include "theory/quantifiers/instantiate.h"
#include "theory/quantifiers/quant_conflict_find.h"
#include "theory/quantifiers/quant_util.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace CVC4;
#include "context/context_mm.h"
#include "theory/quantifiers/ematching/trigger.h"
#include "theory/quantifiers/quant_conflict_find.h"
-#include "theory/quantifiers_engine.h"
+#include "theory/quantifiers/quant_util.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_enumeration.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
using namespace CVC4;
using namespace CVC4::kind;
#include "theory/quantifiers/inst_match_trie.h"
#include "theory/quantifiers/cegqi/inst_strategy_cegqi.h"
#include "theory/quantifiers/single_inv_partition.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_enumeration.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace CVC4::kind;
#ifndef CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
#define CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
+#include <map>
+#include <vector>
+
#include "context/cdhashmap.h"
-#include "theory/quantifiers_engine.h"
+#include "expr/node.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
class CegSingleInv;
#include "printer/printer.h"
#include "theory/quantifiers/sygus/synth_conjecture.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace std;
#include "theory/quantifiers/sygus/sygus_unif_rl.h"
#include "theory/quantifiers/sygus/synth_conjecture.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace CVC4::kind;
#include "expr/node.h"
#include "theory/quantifiers/sygus/synth_conjecture.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/sygus/synth_conjecture.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
using namespace CVC4::kind;
#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_CONS_H
#define CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_CONS_H
-#include "theory/quantifiers_engine.h"
+#include <map>
+#include <vector>
+
+#include "expr/node.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
class SynthConjecture;
#include "theory/quantifiers/sygus/sygus_grammar_red.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include <numeric> // for std::iota
return d_children[op_pos[ind]].getOrMakeType(tn, unres_tn, op_pos, ind + 1);
}
+SygusGrammarNorm::SygusGrammarNorm(QuantifiersEngine* qe)
+ : d_qe(qe), d_tds(d_qe->getTermDatabaseSygus())
+{
+}
+
Kind SygusGrammarNorm::TypeObject::getEliminateKind(Kind ok)
{
Kind nk = ok;
#include "expr/type.h"
#include "expr/type_node.h"
#include "theory/quantifiers/term_util.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
namespace quantifiers {
class SygusGrammarNorm;
+class TermDbSygus;
/** Operator position trie class
*
class SygusGrammarNorm
{
public:
- SygusGrammarNorm(QuantifiersEngine* qe)
- : d_qe(qe), d_tds(d_qe->getTermDatabaseSygus())
- {
- }
+ SygusGrammarNorm(QuantifiersEngine* qe);
~SygusGrammarNorm() {}
/** creates a normalized typenode from a given one.
*
#include "options/quantifiers_options.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
using namespace std;
using namespace CVC4::kind;
#define CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_RED_H
#include <map>
-#include "theory/quantifiers_engine.h"
+#include <vector>
+
+#include "expr/datatype.h"
+#include "expr/node.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
+class TermDbSygus;
+
/** SygusRedundantCons
*
* This class computes the subset of indices of the constructors of a sygus type
#include "theory/quantifiers/sygus/sygus_module.h"
+#include "theory/quantifiers_engine.h"
+
namespace CVC4 {
namespace theory {
namespace quantifiers {
#define CVC4__THEORY__QUANTIFIERS__SYGUS_MODULE_H
#include <map>
+#include <vector>
+
#include "expr/node.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
class SynthConjecture;
+class TermDbSygus;
/** SygusModule
*
#include "expr/node.h"
#include "expr/type_node.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
/** This file contains techniques that compute
#include "theory/quantifiers/cegqi/ceg_instantiator.h"
#include "theory/quantifiers/sygus/sygus_grammar_norm.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
+#include "theory/quantifiers_engine.h"
using namespace CVC4::kind;
#include <unordered_set>
#include "expr/node.h"
#include "theory/logic_info.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
class CegConjecture;
+class TermDbSygus;
/** SygusRepairConst
*
#include "theory/datatypes/datatypes_rewriter.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "util/random.h"
using namespace std;
#include <map>
#include "expr/node.h"
#include "theory/quantifiers/sygus/sygus_unif_strat.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
+class TermDbSygus;
+
/** Sygus unification utility
*
* This utility implements synthesis-by-unification style approaches for a
#include "theory/quantifiers/sygus/sygus_unif.h"
#include "theory/quantifiers/lazy_trie.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#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"
using namespace std;
using namespace CVC4::kind;
#include <map>
#include "expr/node.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
+
+class QuantifiersEngine;
+
namespace quantifiers {
/** roles for enumerators
#include "theory/quantifiers/sygus/synth_engine.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace CVC4::kind;
#include "theory/quantifiers/sygus/sygus_pbe.h"
#include "theory/quantifiers/sygus/sygus_process_conj.h"
#include "theory/quantifiers/sygus/sygus_repair_const.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/quantifiers_engine.h"
#include "theory/theory_engine.h"
using namespace CVC4::kind;
#define CVC4__THEORY__QUANTIFIERS__SYNTH_ENGINE_H
#include "context/cdhashmap.h"
+#include "theory/quantifiers/quant_util.h"
#include "theory/quantifiers/sygus/synth_conjecture.h"
-#include "theory/quantifiers_engine.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers_engine.h"
-#include "expr/term_canonize.h"
#include "options/quantifiers_options.h"
#include "options/uf_options.h"
#include "smt/smt_statistics_registry.h"
-#include "theory/arrays/theory_arrays.h"
-#include "theory/datatypes/theory_datatypes.h"
-#include "theory/quantifiers/alpha_equivalence.h"
-#include "theory/quantifiers/anti_skolem.h"
-#include "theory/quantifiers/bv_inverter.h"
-#include "theory/quantifiers/cegqi/inst_strategy_cegqi.h"
-#include "theory/quantifiers/conjecture_generator.h"
-#include "theory/quantifiers/ematching/inst_strategy_e_matching.h"
-#include "theory/quantifiers/ematching/instantiation_engine.h"
-#include "theory/quantifiers/ematching/trigger.h"
-#include "theory/quantifiers/equality_infer.h"
-#include "theory/quantifiers/equality_query.h"
-#include "theory/quantifiers/first_order_model.h"
-#include "theory/quantifiers/fmf/bounded_integers.h"
-#include "theory/quantifiers/fmf/full_model_check.h"
-#include "theory/quantifiers/fmf/model_engine.h"
-#include "theory/quantifiers/inst_propagator.h"
-#include "theory/quantifiers/inst_strategy_enumerative.h"
-#include "theory/quantifiers/instantiate.h"
-#include "theory/quantifiers/local_theory_ext.h"
-#include "theory/quantifiers/quant_conflict_find.h"
-#include "theory/quantifiers/quant_epr.h"
-#include "theory/quantifiers/quant_relevance.h"
-#include "theory/quantifiers/quant_split.h"
-#include "theory/quantifiers/quantifiers_attributes.h"
-#include "theory/quantifiers/quantifiers_rewriter.h"
-#include "theory/quantifiers/relevant_domain.h"
-#include "theory/quantifiers/rewrite_engine.h"
-#include "theory/quantifiers/skolemize.h"
-#include "theory/quantifiers/sygus/sygus_eval_unfold.h"
-#include "theory/quantifiers/sygus/synth_engine.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/sep/theory_sep.h"
#include "theory/theory_engine.h"
#include "theory/uf/equality_engine.h"
-#include "theory/uf/theory_uf.h"
-#include "theory/uf/theory_uf_strong_solver.h"
using namespace std;
using namespace CVC4;
#include "context/cdhashset.h"
#include "context/cdlist.h"
#include "expr/attribute.h"
+#include "expr/term_canonize.h"
#include "options/quantifiers_modes.h"
+#include "theory/quantifiers/alpha_equivalence.h"
+#include "theory/quantifiers/anti_skolem.h"
+#include "theory/quantifiers/bv_inverter.h"
+#include "theory/quantifiers/cegqi/inst_strategy_cegqi.h"
+#include "theory/quantifiers/conjecture_generator.h"
+#include "theory/quantifiers/ematching/inst_strategy_e_matching.h"
+#include "theory/quantifiers/ematching/instantiation_engine.h"
+#include "theory/quantifiers/ematching/trigger.h"
+#include "theory/quantifiers/equality_infer.h"
+#include "theory/quantifiers/equality_query.h"
+#include "theory/quantifiers/first_order_model.h"
+#include "theory/quantifiers/fmf/bounded_integers.h"
+#include "theory/quantifiers/fmf/full_model_check.h"
+#include "theory/quantifiers/fmf/model_engine.h"
#include "theory/quantifiers/inst_match.h"
+#include "theory/quantifiers/inst_propagator.h"
+#include "theory/quantifiers/inst_strategy_enumerative.h"
+#include "theory/quantifiers/instantiate.h"
+#include "theory/quantifiers/local_theory_ext.h"
+#include "theory/quantifiers/quant_conflict_find.h"
+#include "theory/quantifiers/quant_epr.h"
+#include "theory/quantifiers/quant_relevance.h"
+#include "theory/quantifiers/quant_split.h"
#include "theory/quantifiers/quant_util.h"
+#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/quantifiers/relevant_domain.h"
+#include "theory/quantifiers/rewrite_engine.h"
+#include "theory/quantifiers/skolemize.h"
+#include "theory/quantifiers/sygus/sygus_eval_unfold.h"
+#include "theory/quantifiers/sygus/synth_engine.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/theory.h"
#include "util/hash.h"
#include "util/statistics_registry.h"
class TheoryEngine;
-namespace expr {
-class TermCanonize;
-}
-
namespace theory {
-class QuantifiersEngine;
-
-namespace quantifiers {
- //TODO: organize this more/review this, github issue #1163
- //TODO: include these instead of doing forward declarations? #1307
- //utilities
- class TermDb;
- class TermDbSygus;
- class TermUtil;
- class Instantiate;
- class Skolemize;
- class TermEnumeration;
- class FirstOrderModel;
- class QuantAttributes;
- class QuantEPR;
- class QuantRelevance;
- class RelevantDomain;
- class BvInverter;
- class InstPropagator;
- class EqualityInference;
- class EqualityQueryQuantifiersEngine;
- //modules, these are "subsolvers" of the quantifiers theory.
- class InstantiationEngine;
- class ModelEngine;
- class BoundedIntegers;
- class QuantConflictFind;
- class RewriteEngine;
- class QModelBuilder;
- class ConjectureGenerator;
- class SynthEngine;
- class LtePartialInst;
- class AlphaEquivalence;
- class InstStrategyEnum;
- class InstStrategyCegqi;
- class QuantDSplit;
- class QuantAntiSkolem;
- class EqualityInference;
-}/* CVC4::theory::quantifiers */
-
-namespace inst {
- class TriggerTrie;
-}/* CVC4::theory::inst */
-
-
+// TODO: organize this more/review this, github issue #1163
class QuantifiersEngine {
typedef context::CDHashMap< Node, bool, NodeHashFunction > BoolMap;
typedef context::CDList<Node> NodeList;