summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/sygus/synth_conjecture.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-04-07 15:28:47 -0500
committerGitHub <noreply@github.com>2021-04-07 20:28:47 +0000
commitbd0cf32db7d115e52e243b165a26edb319e91316 (patch)
tree4a4d77049606f9249ca2b03897834150203f4e58 /src/theory/quantifiers/sygus/synth_conjecture.cpp
parent65e5345b950a601524afd1bd47bcecdb65a43326 (diff)
Fixes for abducts (#6279)
Fixes benchmarks 2 and 3 from #5848.
Diffstat (limited to 'src/theory/quantifiers/sygus/synth_conjecture.cpp')
-rw-r--r--src/theory/quantifiers/sygus/synth_conjecture.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/theory/quantifiers/sygus/synth_conjecture.cpp b/src/theory/quantifiers/sygus/synth_conjecture.cpp
index f63941b1c..6db632b11 100644
--- a/src/theory/quantifiers/sygus/synth_conjecture.cpp
+++ b/src/theory/quantifiers/sygus/synth_conjecture.cpp
@@ -180,7 +180,7 @@ void SynthConjecture::assign(Node q)
// construct base instantiation
d_base_inst = Rewriter::rewrite(d_qim.getInstantiate()->getInstantiation(
d_embed_quant, vars, d_candidates));
- if (!d_embedSideCondition.isNull())
+ if (!d_embedSideCondition.isNull() && !vars.empty())
{
d_embedSideCondition = d_embedSideCondition.substitute(
vars.begin(), vars.end(), d_candidates.begin(), d_candidates.end());
@@ -641,8 +641,12 @@ bool SynthConjecture::checkSideCondition(const std::vector<Node>& cvals) const
{
if (!d_embedSideCondition.isNull())
{
- Node sc = d_embedSideCondition.substitute(
+ Node sc = d_embedSideCondition;
+ if (!cvals.empty())
+ {
+ sc = sc.substitute(
d_candidates.begin(), d_candidates.end(), cvals.begin(), cvals.end());
+ }
Trace("sygus-engine") << "Check side condition..." << std::endl;
Trace("cegqi-debug") << "Check side condition : " << sc << std::endl;
Result r = checkWithSubsolver(sc);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback