diff options
author | ajreynol <andrew.j.reynolds@gmail.com> | 2015-10-16 18:26:34 +0200 |
---|---|---|
committer | ajreynol <andrew.j.reynolds@gmail.com> | 2015-10-16 18:26:34 +0200 |
commit | efe80a0aa2fba812264c332d0ab729d935ea1fa1 (patch) | |
tree | 31b742a5c421623853e365994cef1c6e4a4839f7 /src/theory/quantifiers_engine.cpp | |
parent | 0a983828b92c573269b50cd95e23b9f311337073 (diff) |
Add option to interleave enumerative instantiation with other strategies.
Diffstat (limited to 'src/theory/quantifiers_engine.cpp')
-rw-r--r-- | src/theory/quantifiers_engine.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/theory/quantifiers_engine.cpp b/src/theory/quantifiers_engine.cpp index 2c2e4ea5b..622ef5a52 100644 --- a/src/theory/quantifiers_engine.cpp +++ b/src/theory/quantifiers_engine.cpp @@ -94,6 +94,7 @@ d_presolve_cache_wic(u){ d_hasAddedLemma = false; bool needsBuilder = false; + bool needsRelDom = false; Trace("quant-engine-debug") << "Initialize quantifiers engine." << std::endl; Trace("quant-engine-debug") << "Initialize model, mbqi : " << options::mbqiMode() << std::endl; @@ -107,11 +108,6 @@ d_presolve_cache_wic(u){ }else{ d_model = new quantifiers::FirstOrderModelIG( this, c, "FirstOrderModelIG" ); } - if( options::fullSaturateQuant() ){ - d_rel_dom = new quantifiers::RelevantDomain( this, d_model ); - }else{ - d_rel_dom = NULL; - } if( options::relevantTriggers() ){ d_quant_rel = new QuantRelevance( false ); }else{ @@ -191,15 +187,21 @@ d_presolve_cache_wic(u){ }else{ d_uee = NULL; } - //full saturation : instantiate from relevant domain, then arbitrary terms - if( options::fullSaturateQuant() ){ + if( options::fullSaturateQuant() || options::fullSaturateInst() ){ d_fs = new quantifiers::FullSaturation( this ); d_modules.push_back( d_fs ); + needsRelDom = true; }else{ d_fs = NULL; } + if( needsRelDom ){ + d_rel_dom = new quantifiers::RelevantDomain( this, d_model ); + }else{ + d_rel_dom = NULL; + } + if( needsBuilder ){ Trace("quant-engine-debug") << "Initialize model engine, mbqi : " << options::mbqiMode() << " " << options::fmfBoundInt() << std::endl; if( options::mbqiMode()==quantifiers::MBQI_FMC || options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL || |