summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/sygus/cegis_unif.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-05-04 16:54:40 -0500
committerGitHub <noreply@github.com>2018-05-04 16:54:40 -0500
commit74ea6e8cb76028f4698f295fb6f6b1746df34f08 (patch)
treed02dc56987c76b314d669871efe26e8230377661 /src/theory/quantifiers/sygus/cegis_unif.cpp
parent66eab37a0e435b314408b3180819b9751aeff3df (diff)
Cegis unif register evaluation points (#1878)
Diffstat (limited to 'src/theory/quantifiers/sygus/cegis_unif.cpp')
-rw-r--r--src/theory/quantifiers/sygus/cegis_unif.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/theory/quantifiers/sygus/cegis_unif.cpp b/src/theory/quantifiers/sygus/cegis_unif.cpp
index cc477fa62..8fa4af99c 100644
--- a/src/theory/quantifiers/sygus/cegis_unif.cpp
+++ b/src/theory/quantifiers/sygus/cegis_unif.cpp
@@ -171,9 +171,15 @@ void CegisUnif::registerRefinementLemma(const std::vector<Node>& vars,
Node lem,
std::vector<Node>& lems)
{
- /* Notify lemma to unification utility and get its purified form */
- Node plem = d_sygus_unif.addRefLemma(lem);
+ // Notify lemma to unification utility and get its purified form
+ std::map<Node, std::vector<Node> > eval_pts;
+ Node plem = d_sygus_unif.addRefLemma(lem, eval_pts);
d_refinement_lemmas.push_back(plem);
+ // Notify the enumeration manager if there are new evaluation points
+ for (const std::pair<const Node, std::vector<Node> >& ep : eval_pts)
+ {
+ d_u_enum_manager.registerEvalPts(ep.second, ep.first);
+ }
/* Make the refinement lemma and add it to lems. This lemma is guarded by the
parent's guard, which has the semantics "this conjecture has a solution",
hence this lemma states: if the parent conjecture has a solution, it
@@ -197,7 +203,7 @@ CegisUnifEnumManager::CegisUnifEnumManager(QuantifiersEngine* qe,
d_tds = d_qe->getTermDatabaseSygus();
}
-void CegisUnifEnumManager::initialize(std::vector<Node>& cs)
+void CegisUnifEnumManager::initialize(const std::vector<Node>& cs)
{
if (cs.empty())
{
@@ -214,7 +220,7 @@ void CegisUnifEnumManager::initialize(std::vector<Node>& cs)
incrementNumEnumerators();
}
-void CegisUnifEnumManager::registerEvalPts(std::vector<Node>& eis, Node c)
+void CegisUnifEnumManager::registerEvalPts(const std::vector<Node>& eis, Node c)
{
// candidates of the same type are managed
TypeNode ct = c.getType();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback