}
}
-bool Cegis::initialize(Node n,
+bool Cegis::initialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas)
{
TypeNode bt = d_base_body.getType();
d_cegis_sampler.initialize(bt, d_base_vars, options::sygusSamples());
}
- return processInitialize(n, candidates, lemmas);
+ return processInitialize(conj, n, candidates, lemmas);
}
-bool Cegis::processInitialize(Node n,
+bool Cegis::processInitialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas)
{
Cegis(QuantifiersEngine* qe, SynthConjecture* p);
~Cegis() override {}
/** initialize */
- virtual bool initialize(Node n,
+ virtual bool initialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas) override;
/** get term list */
*/
Node d_base_body;
//----------------------------------cegis-implementation-specific
- /** do cegis-implementation-specific initialization for this class */
- virtual bool processInitialize(Node n,
+ /**
+ * Do cegis-implementation-specific initialization for this class. The return
+ * value and behavior of this function is the same as initialize(...) above.
+ */
+ virtual bool processInitialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas);
/** do cegis-implementation-specific post-processing for construct candidate
*
* satisfiedRl is whether all refinement lemmas are satisfied under the
* substitution { enums -> enum_values }.
+ *
+ * The return value and behavior of this function is the same as
+ * constructCandidates(...) above.
*/
virtual bool processConstructCandidates(const std::vector<Node>& enums,
const std::vector<Node>& enum_values,
}
CegisUnif::~CegisUnif() {}
-bool CegisUnif::processInitialize(Node n,
+bool CegisUnif::processInitialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas)
{
private:
/** do cegis-implementation-specific initialization for this class */
- bool processInitialize(Node n,
+ bool processInitialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas) override;
/** Tries to build new candidate solutions with new enumerated expressions
SygusModule(QuantifiersEngine* qe, SynthConjecture* p);
virtual ~SygusModule() {}
/** initialize
+ *
+ * This function initializes the module for solving the given conjecture. This
+ * typically involves registering enumerators (for constructing terms) via
+ * calls to TermDbSygus::registerEnumerator.
+ *
+ * This function returns true if this module will take responsibility for
+ * constructing candidates for the given conjecture.
+ *
+ * conj is the synthesis conjecture (prior to deep-embedding).
*
* n is the "base instantiation" of the deep-embedding version of the
* synthesis conjecture under candidates (see SynthConjecture::d_base_inst).
*
* This function may add lemmas to the argument lemmas, which should be
* sent out on the output channel of quantifiers by the caller.
- *
- * This function returns true if this module will take responsibility for
- * constructing candidates for the given conjecture.
*/
- virtual bool initialize(Node n,
+ virtual bool initialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas) = 0;
/** get term list
return true;
}
-bool SygusPbe::initialize(Node n,
+bool SygusPbe::initialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas)
{
* of an enumerator is not ITE if it is being used to construct
* return values for decision trees.
*/
- bool initialize(Node n,
+ bool initialize(Node conj,
+ Node n,
const std::vector<Node>& candidates,
std::vector<Node>& lemmas) override;
/** get term list
d_ceg_proc->initialize(d_base_inst, d_candidates);
for (unsigned i = 0, size = d_modules.size(); i < size; i++)
{
- if (d_modules[i]->initialize(d_base_inst, d_candidates, guarded_lemmas))
+ if (d_modules[i]->initialize(
+ d_simp_quant, d_base_inst, d_candidates, guarded_lemmas))
{
d_master = d_modules[i];
break;