summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2018-10-12 19:35:01 -0700
committerAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-10-12 21:35:01 -0500
commit43cec89207dd1043608273769a20309167ad3c90 (patch)
tree6a69ac4d89d976ea552e6e6786c4cc8a2cf9291d /src
parent8597f207187baff3b9f8cc5d8955e5b96d6d57d0 (diff)
Reset input language for ExprMiner subsolver (#2624)
Diffstat (limited to 'src')
-rw-r--r--src/options/quantifiers_options.toml8
-rw-r--r--src/smt/smt_engine.cpp16
-rw-r--r--src/theory/quantifiers/expr_miner.cpp4
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);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback