d_extTheoryCb(state.getEqualityEngine()),
d_extTheory(d_extTheoryCb, context(), userContext(), d_im),
d_model(),
- d_trSlv(d_im, d_model, d_astate.getEnv()),
- d_extState(d_im, d_model, d_astate.getEnv()),
+ d_trSlv(d_im, d_model, d_env),
+ d_extState(d_im, d_model, d_env),
d_factoringSlv(&d_extState),
d_monomialBoundsSlv(&d_extState),
d_monomialSlv(&d_extState),
d_splitZeroSlv(&d_extState),
d_tangentPlaneSlv(&d_extState),
- d_cadSlv(d_astate.getEnv(), d_im, d_model),
+ d_cadSlv(d_env, d_im, d_model),
d_icpSlv(d_im),
d_iandSlv(env, d_im, state, d_model),
d_pow2Slv(env, d_im, state, d_model)
d_one = NodeManager::currentNM()->mkConst(Rational(1));
d_neg_one = NodeManager::currentNM()->mkConst(Rational(-1));
- if (d_astate.getEnv().isTheoryProofProducing())
+ if (d_env.isTheoryProofProducing())
{
- ProofChecker* pc = d_astate.getEnv().getProofNodeManager()->getChecker();
+ ProofChecker* pc = d_env.getProofNodeManager()->getChecker();
d_proofChecker.registerTo(pc);
}
}
return d_parent->rewriteInstantiation(q, terms, inst, doVts);
}
-InstStrategyCegqi::InstStrategyCegqi(QuantifiersState& qs,
+InstStrategyCegqi::InstStrategyCegqi(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr),
+ : QuantifiersModule(env, qs, qim, qr, tr),
d_irew(new InstRewriterCegqi(this)),
d_cbqi_set_quant_inactive(false),
d_incomplete_check(false),
}
if (options::cegqiNestedQE())
{
- d_nestedQe.reset(new NestedQe(qs.getEnv()));
+ d_nestedQe.reset(new NestedQe(d_env));
}
}
#ifndef CVC5__THEORY__QUANTIFIERS__INST_STRATEGY_CEGQI_H
#define CVC5__THEORY__QUANTIFIERS__INST_STRATEGY_CEGQI_H
+#include "smt/env_obj.h"
#include "theory/decision_manager.h"
#include "theory/quantifiers/bv_inverter.h"
#include "theory/quantifiers/cegqi/ceg_instantiator.h"
typedef context::CDHashMap<Node, int> NodeIntMap;
public:
- InstStrategyCegqi(QuantifiersState& qs,
+ InstStrategyCegqi(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr);
}
}
-ConjectureGenerator::ConjectureGenerator(QuantifiersState& qs,
+ConjectureGenerator::ConjectureGenerator(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr),
+ : QuantifiersModule(env, qs, qim, qr, tr),
d_notify(*this),
- d_uequalityEngine(
- d_notify, qs.getSatContext(), "ConjectureGenerator::ee", false),
- d_ee_conjectures(qs.getSatContext()),
+ d_uequalityEngine(d_notify, context(), "ConjectureGenerator::ee", false),
+ d_ee_conjectures(context()),
d_conj_count(0),
d_subs_confirmCount(0),
d_subs_unkCount(0),
#include "context/cdhashmap.h"
#include "expr/node_trie.h"
#include "expr/term_canonize.h"
+#include "smt/env_obj.h"
#include "theory/quantifiers/quant_module.h"
#include "theory/type_enumerator.h"
unsigned flushWaitingConjectures( unsigned& addedLemmas, int ldepth, int rdepth );
public:
- ConjectureGenerator(QuantifiersState& qs,
+ ConjectureGenerator(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr);
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr),
+ : QuantifiersModule(env, qs, qim, qr, tr),
d_instStrategies(),
d_isup(),
d_i_ag(),
return lem;
}
-BoundedIntegers::BoundedIntegers(QuantifiersState& qs,
+BoundedIntegers::BoundedIntegers(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr)
+ : QuantifiersModule(env, qs, qim, qr, tr)
{
}
#ifndef CVC5__BOUNDED_INTEGERS_H
#define CVC5__BOUNDED_INTEGERS_H
-#include "theory/quantifiers/quant_module.h"
-
#include "context/cdhashmap.h"
#include "context/context.h"
#include "expr/attribute.h"
+#include "smt/env_obj.h"
#include "theory/decision_strategy.h"
#include "theory/quantifiers/quant_bound_inference.h"
+#include "theory/quantifiers/quant_module.h"
namespace cvc5 {
namespace theory {
std::map< Node, std::map< Node, BoundInstTrie > > d_bnd_it;
public:
- BoundedIntegers(QuantifiersState& qs,
+ BoundedIntegers(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr);
namespace quantifiers {
//Model Engine constructor
-ModelEngine::ModelEngine(QuantifiersState& qs,
+ModelEngine::ModelEngine(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr,
QModelBuilder* builder)
- : QuantifiersModule(qs, qim, qr, tr),
+ : QuantifiersModule(env, qs, qim, qr, tr),
d_incomplete_check(true),
d_addedLemmas(0),
d_triedLemmas(0),
#ifndef CVC5__THEORY__QUANTIFIERS__MODEL_ENGINE_H
#define CVC5__THEORY__QUANTIFIERS__MODEL_ENGINE_H
+#include "smt/env_obj.h"
#include "theory/quantifiers/fmf/model_builder.h"
#include "theory/quantifiers/quant_module.h"
#include "theory/theory_model.h"
int d_triedLemmas;
int d_totalLemmas;
public:
- ModelEngine(QuantifiersState& qs,
+ ModelEngine(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr,
namespace theory {
namespace quantifiers {
-InstStrategyEnum::InstStrategyEnum(QuantifiersState& qs,
+InstStrategyEnum::InstStrategyEnum(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr,
RelevantDomain* rd)
- : QuantifiersModule(qs, qim, qr, tr), d_rd(rd), d_fullSaturateLimit(-1)
+ : QuantifiersModule(env, qs, qim, qr, tr), d_rd(rd), d_fullSaturateLimit(-1)
{
}
void InstStrategyEnum::presolve()
#ifndef CVC5__INST_STRATEGY_ENUMERATIVE_H
#define CVC5__INST_STRATEGY_ENUMERATIVE_H
+#include "smt/env_obj.h"
#include "theory/quantifiers/quant_module.h"
namespace cvc5 {
class InstStrategyEnum : public QuantifiersModule
{
public:
- InstStrategyEnum(QuantifiersState& qs,
+ InstStrategyEnum(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr,
namespace theory {
namespace quantifiers {
-InstStrategyPool::InstStrategyPool(QuantifiersState& qs,
+InstStrategyPool::InstStrategyPool(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr)
+ : QuantifiersModule(env, qs, qim, qr, tr)
{
}
#ifndef CVC5__THEORY__QUANTIFIERS__INST_STRATEGY_POOL_H
#define CVC5__THEORY__QUANTIFIERS__INST_STRATEGY_POOL_H
+#include "smt/env_obj.h"
#include "theory/quantifiers/quant_module.h"
namespace cvc5 {
class InstStrategyPool : public QuantifiersModule
{
public:
- InstStrategyPool(QuantifiersState& qs,
+ InstStrategyPool(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr);
return true;
}
-QuantConflictFind::QuantConflictFind(QuantifiersState& qs,
+QuantConflictFind::QuantConflictFind(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr),
+ : QuantifiersModule(env, qs, qim, qr, tr),
d_conflict(qs.getSatContext(), false),
d_true(NodeManager::currentNM()->mkConst<bool>(true)),
d_false(NodeManager::currentNM()->mkConst<bool>(false)),
bool areMatchDisequal( TNode n1, TNode n2 );
public:
- QuantConflictFind(QuantifiersState& qs,
+ QuantConflictFind(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr);
namespace theory {
QuantifiersModule::QuantifiersModule(
+ Env& env,
quantifiers::QuantifiersState& qs,
quantifiers::QuantifiersInferenceManager& qim,
quantifiers::QuantifiersRegistry& qr,
quantifiers::TermRegistry& tr)
- : EnvObj(qs.getEnv()), d_qstate(qs), d_qim(qim), d_qreg(qr), d_treg(tr)
+ : EnvObj(env), d_qstate(qs), d_qim(qim), d_qreg(qr), d_treg(tr)
{
}
};
public:
- QuantifiersModule(quantifiers::QuantifiersState& qs,
+ QuantifiersModule(Env& env,
+ quantifiers::QuantifiersState& qs,
quantifiers::QuantifiersInferenceManager& qim,
quantifiers::QuantifiersRegistry& qr,
quantifiers::TermRegistry& tr);
namespace theory {
namespace quantifiers {
-QuantDSplit::QuantDSplit(QuantifiersState& qs,
+QuantDSplit::QuantDSplit(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr), d_added_split(qs.getUserContext())
+ : QuantifiersModule(env, qs, qim, qr, tr),
+ d_added_split(qs.getUserContext())
{
}
#define CVC5__THEORY__QUANT_SPLIT_H
#include "context/cdo.h"
+#include "smt/env_obj.h"
#include "theory/quantifiers/quant_module.h"
namespace cvc5 {
typedef context::CDHashSet<Node> NodeSet;
public:
- QuantDSplit(QuantifiersState& qs,
+ QuantDSplit(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr);
// add quantifiers modules
if (options::quantConflictFind())
{
- d_qcf.reset(new QuantConflictFind(qs, qim, qr, tr));
+ d_qcf.reset(new QuantConflictFind(env, qs, qim, qr, tr));
modules.push_back(d_qcf.get());
}
if (options::conjectureGen())
{
- d_sg_gen.reset(new ConjectureGenerator(qs, qim, qr, tr));
+ d_sg_gen.reset(new ConjectureGenerator(env, qs, qim, qr, tr));
modules.push_back(d_sg_gen.get());
}
if (!options::finiteModelFind() || options::fmfInstEngine())
}
if (options::cegqi())
{
- d_i_cbqi.reset(new InstStrategyCegqi(qs, qim, qr, tr));
+ d_i_cbqi.reset(new InstStrategyCegqi(env, qs, qim, qr, tr));
modules.push_back(d_i_cbqi.get());
qim.getInstantiate()->addRewriter(d_i_cbqi->getInstRewriter());
}
// fmfBound, or if strings are enabled.
if (options::fmfBound() || options::stringExp())
{
- d_bint.reset(new BoundedIntegers(qs, qim, qr, tr));
+ d_bint.reset(new BoundedIntegers(env, qs, qim, qr, tr));
modules.push_back(d_bint.get());
}
if (options::finiteModelFind() || options::fmfBound() || options::stringExp())
{
- d_model_engine.reset(new ModelEngine(qs, qim, qr, tr, builder));
+ d_model_engine.reset(new ModelEngine(env, qs, qim, qr, tr, builder));
modules.push_back(d_model_engine.get());
}
if (options::quantDynamicSplit() != options::QuantDSplitMode::NONE)
{
- d_qsplit.reset(new QuantDSplit(qs, qim, qr, tr));
+ d_qsplit.reset(new QuantDSplit(env, qs, qim, qr, tr));
modules.push_back(d_qsplit.get());
}
if (options::quantAlphaEquiv())
if (options::fullSaturateQuant() || options::fullSaturateInterleave())
{
d_rel_dom.reset(new RelevantDomain(env, qs, qr, tr));
- d_fs.reset(new InstStrategyEnum(qs, qim, qr, tr, d_rel_dom.get()));
+ d_fs.reset(new InstStrategyEnum(env, qs, qim, qr, tr, d_rel_dom.get()));
modules.push_back(d_fs.get());
}
if (options::poolInst())
{
- d_ipool.reset(new InstStrategyPool(qs, qim, qr, tr));
+ d_ipool.reset(new InstStrategyPool(env, qs, qim, qr, tr));
modules.push_back(d_ipool.get());
}
if (options::sygusInst())
{
- d_sygus_inst.reset(new SygusInst(qs, qim, qr, tr));
+ d_sygus_inst.reset(new SygusInst(env, qs, qim, qr, tr));
modules.push_back(d_sygus_inst.get());
}
}
namespace theory {
namespace quantifiers {
-Cegis::Cegis(QuantifiersState& qs,
+Cegis::Cegis(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p)
- : SygusModule(qs, qim, tds, p),
+ : SygusModule(env, qs, qim, tds, p),
d_eval_unfold(tds->getEvalUnfold()),
d_usingSymCons(false)
{
#define CVC5__THEORY__QUANTIFIERS__CEGIS_H
#include <map>
+
+#include "smt/env_obj.h"
#include "theory/quantifiers/sygus/sygus_module.h"
#include "theory/quantifiers/sygus_sampler.h"
class Cegis : public SygusModule
{
public:
- Cegis(QuantifiersState& qs,
+ Cegis(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p);
return false;
}
-CegisCoreConnective::CegisCoreConnective(QuantifiersState& qs,
+CegisCoreConnective::CegisCoreConnective(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p)
- : Cegis(qs, qim, tds, p)
+ : Cegis(env, qs, qim, tds, p)
{
d_true = NodeManager::currentNM()->mkConst(true);
d_false = NodeManager::currentNM()->mkConst(false);
Result CegisCoreConnective::checkSat(Node n, std::vector<Node>& mvs) const
{
Trace("sygus-ccore-debug") << "...check-sat " << n << "..." << std::endl;
- Env& env = d_qstate.getEnv();
- Result r =
- checkWithSubsolver(n, d_vars, mvs, env.getOptions(), env.getLogicInfo());
+ Result r = checkWithSubsolver(n, d_vars, mvs, options(), logicInfo());
Trace("sygus-ccore-debug") << "...got " << r << std::endl;
return r;
}
addSuccess = false;
// try a new core
std::unique_ptr<SmtEngine> checkSol;
- initializeSubsolver(checkSol, d_qstate.getEnv());
+ initializeSubsolver(checkSol, d_env);
Trace("sygus-ccore") << "----- Check candidate " << an << std::endl;
std::vector<Node> rasserts = asserts;
rasserts.push_back(d_sc);
// In terms of Variant #2, this is the check "if S ^ U is unsat"
Trace("sygus-ccore") << "----- Check side condition" << std::endl;
std::unique_ptr<SmtEngine> checkSc;
- initializeSubsolver(checkSc, d_qstate.getEnv());
+ initializeSubsolver(checkSc, d_env);
std::vector<Node> scasserts;
scasserts.insert(scasserts.end(), uasserts.begin(), uasserts.end());
scasserts.push_back(d_sc);
#include "expr/node.h"
#include "expr/node_trie.h"
+#include "smt/env_obj.h"
#include "theory/evaluator.h"
#include "theory/quantifiers/sygus/cegis.h"
#include "util/result.h"
class CegisCoreConnective : public Cegis
{
public:
- CegisCoreConnective(QuantifiersState& qs,
+ CegisCoreConnective(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p);
namespace theory {
namespace quantifiers {
-CegisUnif::CegisUnif(QuantifiersState& qs,
+CegisUnif::CegisUnif(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p)
- : Cegis(qs, qim, tds, p),
- d_sygus_unif(qs.getEnv(), p),
- d_u_enum_manager(qs, qim, tds, p)
+ : Cegis(env, qs, qim, tds, p),
+ d_sygus_unif(env, p),
+ d_u_enum_manager(env, qs, qim, tds, p)
{
}
}
CegisUnifEnumDecisionStrategy::CegisUnifEnumDecisionStrategy(
+ Env& env,
QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
#include <map>
#include <vector>
+#include "smt/env_obj.h"
#include "theory/decision_strategy.h"
#include "theory/quantifiers/sygus/cegis.h"
#include "theory/quantifiers/sygus/sygus_unif_rl.h"
class CegisUnifEnumDecisionStrategy : public DecisionStrategyFmf
{
public:
- CegisUnifEnumDecisionStrategy(QuantifiersState& qs,
+ CegisUnifEnumDecisionStrategy(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* parent);
class CegisUnif : public Cegis
{
public:
- CegisUnif(QuantifiersState& qs,
+ CegisUnif(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p);
namespace theory {
namespace quantifiers {
-SygusModule::SygusModule(QuantifiersState& qs,
+SygusModule::SygusModule(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p)
- : EnvObj(qs.getEnv()), d_qstate(qs), d_qim(qim), d_tds(tds), d_parent(p)
+ : EnvObj(env), d_qstate(qs), d_qim(qim), d_tds(tds), d_parent(p)
{
}
class SygusModule : protected EnvObj
{
public:
- SygusModule(QuantifiersState& qs,
+ SygusModule(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p);
namespace theory {
namespace quantifiers {
-SygusPbe::SygusPbe(QuantifiersState& qs,
+SygusPbe::SygusPbe(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p)
- : SygusModule(qs, qim, tds, p)
+ : SygusModule(env, qs, qim, tds, p)
{
d_true = NodeManager::currentNM()->mkConst(true);
d_false = NodeManager::currentNM()->mkConst(false);
#ifndef CVC5__THEORY__QUANTIFIERS__SYGUS_PBE_H
#define CVC5__THEORY__QUANTIFIERS__SYGUS_PBE_H
+#include "smt/env_obj.h"
#include "theory/quantifiers/sygus/sygus_module.h"
namespace cvc5 {
class SygusPbe : public SygusModule
{
public:
- SygusPbe(QuantifiersState& qs,
+ SygusPbe(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p);
d_ceg_gc(new CegGrammarConstructor(d_tds, this)),
d_sygus_rconst(new SygusRepairConst(env, d_tds)),
d_exampleInfer(new ExampleInfer(d_tds)),
- d_ceg_pbe(new SygusPbe(qs, qim, d_tds, this)),
- d_ceg_cegis(new Cegis(qs, qim, d_tds, this)),
- d_ceg_cegisUnif(new CegisUnif(qs, qim, d_tds, this)),
- d_sygus_ccore(new CegisCoreConnective(qs, qim, d_tds, this)),
+ d_ceg_pbe(new SygusPbe(env, qs, qim, d_tds, this)),
+ d_ceg_cegis(new Cegis(env, qs, qim, d_tds, this)),
+ d_ceg_cegisUnif(new CegisUnif(env, qs, qim, d_tds, this)),
+ d_sygus_ccore(new CegisCoreConnective(env, qs, qim, d_tds, this)),
d_master(nullptr),
d_set_ce_sk_vars(false),
d_repair_index(0),
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr), d_conj(nullptr), d_sqp(qs.getEnv())
+ : QuantifiersModule(env, qs, qim, qr, tr), d_conj(nullptr), d_sqp(env)
{
d_conjs.push_back(std::unique_ptr<SynthConjecture>(
new SynthConjecture(env, qs, qim, qr, tr, d_statistics)));
} // namespace
-SygusInst::SygusInst(QuantifiersState& qs,
+SygusInst::SygusInst(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr)
- : QuantifiersModule(qs, qim, qr, tr),
- d_ce_lemma_added(qs.getUserContext()),
- d_global_terms(qs.getUserContext()),
- d_notified_assertions(qs.getUserContext())
+ : QuantifiersModule(env, qs, qim, qr, tr),
+ d_ce_lemma_added(userContext()),
+ d_global_terms(userContext()),
+ d_notified_assertions(userContext())
{
}
#include <unordered_set>
#include "context/cdhashset.h"
+#include "smt/env_obj.h"
#include "theory/decision_strategy.h"
#include "theory/quantifiers/quant_module.h"
class SygusInst : public QuantifiersModule
{
public:
- SygusInst(QuantifiersState& qs,
+ SygusInst(Env& env,
+ QuantifiersState& qs,
QuantifiersInferenceManager& qim,
QuantifiersRegistry& qr,
TermRegistry& tr);
TermRegistry::TermRegistry(Env& env,
QuantifiersState& qs,
QuantifiersRegistry& qr)
- : d_presolve(qs.getUserContext(), true),
+ : EnvObj(env),
+ d_presolve(qs.getUserContext(), true),
d_presolveCache(qs.getUserContext()),
d_termEnum(new TermEnumeration),
d_termPools(new TermPools(env, qs)),
- d_termDb(qs.getEnv().getLogicInfo().isHigherOrder()
- ? new HoTermDb(env, qs, qr)
- : new TermDb(env, qs, qr)),
+ d_termDb(logicInfo().isHigherOrder() ? new HoTermDb(env, qs, qr)
+ : new TermDb(env, qs, qr)),
d_sygusTdb(nullptr),
d_qmodel(nullptr)
{
#include <unordered_set>
#include "context/cdhashset.h"
+#include "smt/env_obj.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_enumeration.h"
* Term Registry, which manages notifying modules within quantifiers about
* (ground) terms that exist in the current context.
*/
-class TermRegistry
+class TermRegistry : protected EnvObj
{
using NodeSet = context::CDHashSet<Node>;
context::Context* getSatContext() const;
/** Get the user context */
context::UserContext* getUserContext() const;
- /** Get the environment */
- Env& getEnv() const { return d_env; }
//-------------------------------------- equality information
/** Is t registered as a term in the equality engine of this class? */
virtual bool hasTerm(TNode a) const;