diff options
author | Andres Noetzli <andres.noetzli@gmail.com> | 2018-10-12 19:35:01 -0700 |
---|---|---|
committer | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-10-12 21:35:01 -0500 |
commit | 43cec89207dd1043608273769a20309167ad3c90 (patch) | |
tree | 6a69ac4d89d976ea552e6e6786c4cc8a2cf9291d /src | |
parent | 8597f207187baff3b9f8cc5d8955e5b96d6d57d0 (diff) |
Reset input language for ExprMiner subsolver (#2624)
Diffstat (limited to 'src')
-rw-r--r-- | src/options/quantifiers_options.toml | 8 | ||||
-rw-r--r-- | src/smt/smt_engine.cpp | 16 | ||||
-rw-r--r-- | src/theory/quantifiers/expr_miner.cpp | 4 |
3 files changed, 26 insertions, 2 deletions
diff --git a/src/options/quantifiers_options.toml b/src/options/quantifiers_options.toml index e65d57770..f3baa8214 100644 --- a/src/options/quantifiers_options.toml +++ b/src/options/quantifiers_options.toml @@ -1355,6 +1355,14 @@ header = "options/quantifiers_options.h" type = "unsigned long" help = "timeout (in milliseconds) for satisfiability checks in expression miners" +[[option]] + name = "sygusExprMinerCheckUseExport" + category = "expert" + long = "sygus-expr-miner-check-use-export" + type = "bool" + default = "true" + help = "export expressions to a different ExprManager with different options for satisfiability checks in expression miners" + # CEGQI applied to general quantified formulas [[option]] diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp index 0a4859971..b1d6df852 100644 --- a/src/smt/smt_engine.cpp +++ b/src/smt/smt_engine.cpp @@ -2182,6 +2182,22 @@ void SmtEngine::setDefaults() { << endl; options::bvLazyRewriteExtf.set(false); } + + if (!options::sygusExprMinerCheckUseExport()) + { + if (options::sygusExprMinerCheckTimeout.wasSetByUser()) + { + throw OptionException( + "--sygus-expr-miner-check-timeout=N requires " + "--sygus-expr-miner-check-use-export"); + } + if (options::sygusRewSynthInput()) + { + throw OptionException( + "--sygus-rr-synth-input requires " + "--sygus-expr-miner-check-use-export"); + } + } } void SmtEngine::setProblemExtended(bool value) diff --git a/src/theory/quantifiers/expr_miner.cpp b/src/theory/quantifiers/expr_miner.cpp index 67aa8688c..16e59c119 100644 --- a/src/theory/quantifiers/expr_miner.cpp +++ b/src/theory/quantifiers/expr_miner.cpp @@ -77,8 +77,7 @@ void ExprMiner::initializeChecker(std::unique_ptr<SmtEngine>& checker, // check is ground. Node squery = convertToSkolem(query); NodeManager* nm = NodeManager::currentNM(); - if (options::sygusExprMinerCheckTimeout.wasSetByUser() - || options::sygusRewSynthInput()) + if (options::sygusExprMinerCheckUseExport()) { // To support a separate timeout for the subsolver, we need to create // a separate ExprManager with its own options. This requires that @@ -91,6 +90,7 @@ void ExprMiner::initializeChecker(std::unique_ptr<SmtEngine>& checker, checker->setTimeLimit(options::sygusExprMinerCheckTimeout(), true); checker->setLogic(smt::currentSmtEngine()->getLogicInfo()); checker->setOption("sygus-rr-synth-input", false); + checker->setOption("input-language", "smt2"); Expr equery = squery.toExpr().exportTo(&em, varMap); checker->assertFormula(equery); } |