#include <vector>
#include "expr/node.h"
+#include "smt/env_obj.h"
#include "theory/quantifiers/sygus_sampler.h"
#include "theory/smt_engine_subsolver.h"
* from (enumerated) expressions. This includes:
* - candidate rewrite rules (--sygus-rr-synth)
*/
-class ExprMiner
+class ExprMiner : protected EnvObj
{
public:
- ExprMiner(Env& env) : d_env(env), d_sampler(nullptr) {}
+ ExprMiner(Env& env) : EnvObj(env), d_sampler(nullptr) {}
virtual ~ExprMiner() {}
/** initialize
*
virtual bool addTerm(Node n, std::ostream& out) = 0;
protected:
- /** Reference to the env */
- Env& d_env;
/** the set of variables used by this class */
std::vector<Node> d_vars;
/**
namespace quantifiers {
ExpressionMinerManager::ExpressionMinerManager(Env& env)
- : d_env(env),
+ : EnvObj(env),
d_doRewSynth(false),
d_doQueryGen(false),
d_doFilterLogicalStrength(false),
#define CVC5__THEORY__QUANTIFIERS__EXPR_MINER_MANAGER_H
#include "expr/node.h"
+#include "smt/env_obj.h"
#include "theory/quantifiers/candidate_rewrite_database.h"
#include "theory/quantifiers/extended_rewrite.h"
#include "theory/quantifiers/query_generator.h"
* coordination, possibly sharing information and utilities like a common
* sampling object.
*/
-class ExpressionMinerManager
+class ExpressionMinerManager : protected EnvObj
{
public:
ExpressionMinerManager(Env& env);
bool addTerm(Node sol, std::ostream& out, bool& rew_print);
private:
- /** Reference to the env */
- Env& d_env;
/** whether we are doing rewrite synthesis */
bool d_doRewSynth;
/** whether we are doing query generation */
quantifiers::QuantifiersInferenceManager& qim,
quantifiers::QuantifiersRegistry& qr,
quantifiers::TermRegistry& tr)
- : d_qstate(qs), d_qim(qim), d_qreg(qr), d_treg(tr)
+ : EnvObj(qs.getEnv()), d_qstate(qs), d_qim(qim), d_qreg(qr), d_treg(tr)
{
}
#include <map>
#include <vector>
+#include "smt/env_obj.h"
#include "theory/quantifiers/quantifiers_inference_manager.h"
#include "theory/quantifiers/quantifiers_registry.h"
#include "theory/quantifiers/quantifiers_state.h"
* This is the virtual class for defining subsolvers of the quantifiers theory.
* It has a similar interface to a Theory object.
*/
-class QuantifiersModule
+class QuantifiersModule : protected EnvObj
{
public:
/** effort levels for quantifiers modules check */
class SolutionFilterStrength : public ExprMiner
{
public:
- SolutionFilterStrength(Env& d_env);
+ SolutionFilterStrength(Env& env);
~SolutionFilterStrength() {}
/** initialize */
void initialize(const std::vector<Node>& vars,
#include "theory/quantifiers/sygus/sygus_module.h"
+#include "theory/quantifiers/quantifiers_state.h"
+
namespace cvc5 {
namespace theory {
namespace quantifiers {
QuantifiersInferenceManager& qim,
TermDbSygus* tds,
SynthConjecture* p)
- : d_qstate(qs), d_qim(qim), d_tds(tds), d_parent(p)
+ : EnvObj(qs.getEnv()), d_qstate(qs), d_qim(qim), d_tds(tds), d_parent(p)
{
}
#include <vector>
#include "expr/node.h"
+#include "smt/env_obj.h"
namespace cvc5 {
namespace theory {
* Modules implement an initialize function, which determines whether the module
* will take responsibility for the given conjecture.
*/
-class SygusModule
+class SygusModule : protected EnvObj
{
public:
SygusModule(QuantifiersState& qs,