summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/sygus/cegis_unif.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/quantifiers/sygus/cegis_unif.h')
-rw-r--r--src/theory/quantifiers/sygus/cegis_unif.h32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/theory/quantifiers/sygus/cegis_unif.h b/src/theory/quantifiers/sygus/cegis_unif.h
index 00cc5af72..c32a1390c 100644
--- a/src/theory/quantifiers/sygus/cegis_unif.h
+++ b/src/theory/quantifiers/sygus/cegis_unif.h
@@ -90,6 +90,7 @@ class CegisUnifEnumDecisionStrategy : public DecisionStrategyFmf
void registerEvalPts(const std::vector<Node>& eis, Node e);
/** Retrieves active guard for enumerator */
Node getActiveGuardForEnumerator(Node e);
+
private:
/** reference to quantifier engine */
QuantifiersEngine* d_qe;
@@ -223,7 +224,7 @@ class CegisUnif : public Cegis
* example would actually correspond to
* eval(d, 0) != c1 v eval(d, c1) != c2 v eval(d, c2) > 1
* in which d is the deep embedding of the function-to-synthesize f
- */
+ */
void registerRefinementLemma(const std::vector<Node>& vars,
Node lem,
std::vector<Node>& lems) override;
@@ -261,6 +262,35 @@ class CegisUnif : public Cegis
std::vector<Node>& candidate_values,
bool satisfiedRl,
std::vector<Node>& lems) override;
+ /** communicate condition values to solution building utility
+ *
+ * for each unification candidate and for each strategy point associated with
+ * it, set in d_sygus_unif the condition values (unif_cvalues) for respective
+ * condition enumerators (unif_cenums)
+ */
+ void setConditions(const std::map<Node, std::vector<Node>>& unif_cenums,
+ const std::map<Node, std::vector<Node>>& unif_cvalues,
+ std::vector<Node>& lems);
+ /** set values of condition enumerators based on current enumerator assignment
+ *
+ * enums and enum_values are the enumerators registered in getTermList and
+ * their values retrieved by the parent SynthConjecture module, respectively.
+ *
+ * unif_cenums and unif_cvalues associate the conditional enumerators of each
+ * strategy point of each unification candidate with their respective model
+ * values
+ *
+ * This function also generates inter-enumerator symmetry breaking for return
+ * values, such that their model values are ordered by size
+ *
+ * returns true if no symmetry breaking lemmas were generated for the return
+ * value enumerators, false otherwise
+ */
+ bool getEnumValues(const std::vector<Node>& enums,
+ const std::vector<Node>& enum_values,
+ std::map<Node, std::vector<Node>>& unif_cenums,
+ std::map<Node, std::vector<Node>>& unif_cvalues,
+ std::vector<Node>& lems);
/**
* Sygus unif utility. This class implements the core algorithm (e.g. decision
* tree learning) that this module relies upon.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback