summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-03-27 14:37:01 -0500
committerGitHub <noreply@github.com>2018-03-27 14:37:01 -0500
commitd8c56098916be16ba80c79933c2e6fc7850024b7 (patch)
treeed849e57a2523946eb0bf84859b1e5dcd5b55bc6 /src
parenta035836d07e831cca30eef800fdf0b3ad88e0ede (diff)
Fix for --sygus-rr-synth (#1723)
Diffstat (limited to 'src')
-rw-r--r--src/options/quantifiers_options.toml8
-rw-r--r--src/theory/quantifiers/sygus_sampler.cpp20
2 files changed, 20 insertions, 8 deletions
diff --git a/src/options/quantifiers_options.toml b/src/options/quantifiers_options.toml
index ad05aa5cd..28a9e58a7 100644
--- a/src/options/quantifiers_options.toml
+++ b/src/options/quantifiers_options.toml
@@ -1115,6 +1115,14 @@ header = "options/quantifiers_options.h"
help = "use sygus to enumerate candidate rewrite rules via sampling"
[[option]]
+ name = "sygusRewSynthFilter"
+ category = "regular"
+ long = "sygus-rr-synth-filter"
+ type = "bool"
+ default = "true"
+ help = "filter candidate rewrites based on techniques like matching"
+
+[[option]]
name = "sygusRewVerify"
category = "regular"
long = "sygus-rr-verify"
diff --git a/src/theory/quantifiers/sygus_sampler.cpp b/src/theory/quantifiers/sygus_sampler.cpp
index 99494657f..f9ae0b553 100644
--- a/src/theory/quantifiers/sygus_sampler.cpp
+++ b/src/theory/quantifiers/sygus_sampler.cpp
@@ -717,15 +717,18 @@ Node SygusSamplerExt::registerTerm(Node n, bool forceKeep)
// whether we will keep this pair
bool keep = true;
- // ----- check matchable
- // check whether the pair is matchable with a previous one
- d_curr_pair_rhs = beq_n;
- Trace("sse-match") << "SSE check matches : " << n << " [rhs = " << eq_n
- << "]..." << std::endl;
- if (!d_match_trie.getMatches(bn, &d_ssenm))
+ if( options::sygusRewSynthFilter() )
{
- keep = false;
- Trace("sygus-synth-rr-debug") << "...redundant (matchable)" << std::endl;
+ // ----- check matchable
+ // check whether the pair is matchable with a previous one
+ d_curr_pair_rhs = beq_n;
+ Trace("sse-match") << "SSE check matches : " << n << " [rhs = " << eq_n
+ << "]..." << std::endl;
+ if (!d_match_trie.getMatches(bn, &d_ssenm))
+ {
+ keep = false;
+ Trace("sygus-synth-rr-debug") << "...redundant (matchable)" << std::endl;
+ }
}
// ----- check rewriting redundancy
@@ -884,6 +887,7 @@ bool MatchTrie::getMatches(Node n, NotifyMatch* ntm)
smap.erase(vars.back());
vars.pop_back();
subs.pop_back();
+ visit_bound_var[index] = false;
}
if (vindex == static_cast<int>(curr->d_vars.size()))
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback