summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/sygus/cegis_unif.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-05-17 14:09:46 -0500
committerHaniel Barbosa <hanielbbarbosa@gmail.com>2018-05-17 14:09:46 -0500
commit19cf50fcb832b01bb119dc1cfc31884e4e864f06 (patch)
tree2c9c0f41307ab5d62df39102571935bd2ea5fff1 /src/theory/quantifiers/sygus/cegis_unif.cpp
parent19ab3936ef46e93a98a142e0c454659ecc1d1e27 (diff)
Cegis-specific infrastructure (#1933)
Diffstat (limited to 'src/theory/quantifiers/sygus/cegis_unif.cpp')
-rw-r--r--src/theory/quantifiers/sygus/cegis_unif.cpp44
1 files changed, 16 insertions, 28 deletions
diff --git a/src/theory/quantifiers/sygus/cegis_unif.cpp b/src/theory/quantifiers/sygus/cegis_unif.cpp
index 20f062722..9ae598f83 100644
--- a/src/theory/quantifiers/sygus/cegis_unif.cpp
+++ b/src/theory/quantifiers/sygus/cegis_unif.cpp
@@ -33,9 +33,9 @@ CegisUnif::CegisUnif(QuantifiersEngine* qe, CegConjecture* p)
}
CegisUnif::~CegisUnif() {}
-bool CegisUnif::initialize(Node n,
- const std::vector<Node>& candidates,
- std::vector<Node>& lemmas)
+bool CegisUnif::processInitialize(Node n,
+ const std::vector<Node>& candidates,
+ std::vector<Node>& lemmas)
{
Trace("cegis-unif") << "Initialize CegisUnif : " << n << std::endl;
// list of strategy points for unification candidates
@@ -99,27 +99,16 @@ void CegisUnif::getTermList(const std::vector<Node>& candidates,
}
}
-bool CegisUnif::constructCandidates(const std::vector<Node>& enums,
- const std::vector<Node>& enum_values,
- const std::vector<Node>& candidates,
- std::vector<Node>& candidate_values,
- std::vector<Node>& lems)
+bool CegisUnif::processConstructCandidates(const std::vector<Node>& enums,
+ const std::vector<Node>& enum_values,
+ const std::vector<Node>& candidates,
+ std::vector<Node>& candidate_values,
+ bool satisfiedRl,
+ std::vector<Node>& lems)
{
- if (Trace.isOn("cegis-unif-enum"))
- {
- Trace("cegis-unif-enum") << " Evaluation heads :\n";
- for (unsigned i = 0, size = enums.size(); i < size; ++i)
- {
- Trace("cegis-unif-enum") << " " << enums[i] << " -> ";
- std::stringstream ss;
- Printer::getPrinter(options::outputLanguage())
- ->toStreamSygus(ss, enum_values[i]);
- Trace("cegis-unif-enum") << ss.str() << std::endl;
- }
- }
- // evaluate on refinement lemmas
- if (addEvalLemmas(enums, enum_values))
+ if (!satisfiedRl)
{
+ // if we didn't satisfy the specification, there is no way to repair
return false;
}
// the unification enumerators (return values, conditions) and their model
@@ -137,9 +126,8 @@ bool CegisUnif::constructCandidates(const std::vector<Node>& enums,
{
for (unsigned index = 0; index < 2; index++)
{
- Trace("cegis-unif-enum")
- << " " << (index == 0 ? "Return values" : "Conditions") << " for "
- << e << ":\n";
+ Trace("cegis") << " " << (index == 0 ? "Return values" : "Conditions")
+ << " for " << e << ":\n";
// get the current unification enumerators
d_u_enum_manager.getEnumeratorsForStrategyPt(
e, unif_enums[index][e], index);
@@ -147,13 +135,13 @@ bool CegisUnif::constructCandidates(const std::vector<Node>& enums,
for (const Node& eu : unif_enums[index][e])
{
Node m_eu = d_parent->getModelValue(eu);
- if (Trace.isOn("cegis-unif-enum"))
+ if (Trace.isOn("cegis"))
{
- Trace("cegis-unif-enum") << " " << eu << " -> ";
+ Trace("cegis") << " " << eu << " -> ";
std::stringstream ss;
Printer::getPrinter(options::outputLanguage())
->toStreamSygus(ss, m_eu);
- Trace("cegis-unif-enum") << ss.str() << std::endl;
+ Trace("cegis") << ss.str() << std::endl;
}
unif_values[index][e].push_back(m_eu);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback