diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2021-04-07 15:28:47 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-07 20:28:47 +0000 |
commit | bd0cf32db7d115e52e243b165a26edb319e91316 (patch) | |
tree | 4a4d77049606f9249ca2b03897834150203f4e58 /src/theory/quantifiers/sygus/synth_conjecture.cpp | |
parent | 65e5345b950a601524afd1bd47bcecdb65a43326 (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.cpp | 8 |
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); |