summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2016-11-10 08:55:14 -0600
committerajreynol <andrew.j.reynolds@gmail.com>2016-11-10 08:55:38 -0600
commit8142799520aa07d6134314761de9d47ac14d27b0 (patch)
tree19607608fc6543070337fa141dff414a0585ca22 /src
parentfd24718e1d1127e648f789920fb413da3118d998 (diff)
Add option for enabling/disabling lazy extended function reduction in bitvectors.
Diffstat (limited to 'src')
-rw-r--r--src/options/bv_options3
-rw-r--r--src/smt/smt_engine.cpp5
-rw-r--r--src/theory/bv/theory_bv_rewriter.cpp4
3 files changed, 10 insertions, 2 deletions
diff --git a/src/options/bv_options b/src/options/bv_options
index 2e6fa2e7a..341060b37 100644
--- a/src/options/bv_options
+++ b/src/options/bv_options
@@ -69,4 +69,7 @@ expert-option bitvectorQuickXplain --bv-quick-xplain bool :default false
expert-option bvIntroducePow2 --bv-intro-pow2 bool :default false
introduce bitvector powers of two as a preprocessing pass
+option bvLazyRewriteExtf --bv-lazy-rewrite-extf bool :default true :read-write
+ lazily rewrite extended functions like bv2nat and int2bv
+
endmodule
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index d726b836f..e46511e59 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -1594,6 +1594,11 @@ void SmtEngine::setDefaults() {
Trace("smt") << "enabling eager bit-vector explanations " << endl;
options::bvEagerExplanations.set(true);
}
+
+ if( !options::bitvectorEqualitySolver() ){
+ Trace("smt") << "disabling bvLazyRewriteExtf since equality solver is disabled" << endl;
+ options::bvLazyRewriteExtf.set(false);
+ }
// Turn on arith rewrite equalities only for pure arithmetic
if(! options::arithRewriteEq.wasSetByUser()) {
diff --git a/src/theory/bv/theory_bv_rewriter.cpp b/src/theory/bv/theory_bv_rewriter.cpp
index 7b9bdf14f..4c6afa7b9 100644
--- a/src/theory/bv/theory_bv_rewriter.cpp
+++ b/src/theory/bv/theory_bv_rewriter.cpp
@@ -571,7 +571,7 @@ RewriteResponse TheoryBVRewriter::RewriteRedand(TNode node, bool prerewrite){
RewriteResponse TheoryBVRewriter::RewriteBVToNat(TNode node, bool prerewrite) {
//do not use lazy rewrite strategy if equality solver is disabled
- if( node[0].isConst() || !options::bitvectorEqualitySolver() ){
+ if( node[0].isConst() || !options::bvLazyRewriteExtf() ){
Node resultNode = LinearRewriteStrategy
< RewriteRule<BVToNatEliminate>
>::apply(node);
@@ -583,7 +583,7 @@ RewriteResponse TheoryBVRewriter::RewriteBVToNat(TNode node, bool prerewrite) {
RewriteResponse TheoryBVRewriter::RewriteIntToBV(TNode node, bool prerewrite) {
//do not use lazy rewrite strategy if equality solver is disabled
- if( node[0].isConst() || !options::bitvectorEqualitySolver() ){
+ if( node[0].isConst() || !options::bvLazyRewriteExtf() ){
Node resultNode = LinearRewriteStrategy
< RewriteRule<IntToBVEliminate>
>::apply(node);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback