summaryrefslogtreecommitdiff
path: root/src/smt/smt_engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/smt/smt_engine.cpp')
-rw-r--r--src/smt/smt_engine.cpp56
1 files changed, 26 insertions, 30 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 97e3f0215..ca01ccd8e 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -1304,8 +1304,8 @@ void SmtEngine::setDefaults() {
// Language-based defaults
if (!options::bitvectorDivByZeroConst.wasSetByUser())
{
- options::bitvectorDivByZeroConst.set(options::inputLanguage()
- == language::input::LANG_SMTLIB_V2_6);
+ options::bitvectorDivByZeroConst.set(
+ language::isInputLang_smt2_6(options::inputLanguage()));
}
if (options::inputLanguage() == language::input::LANG_SYGUS)
{
@@ -2262,44 +2262,40 @@ void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
d_filename = value.getValue();
return;
} else if(key == "smt-lib-version") {
+ language::input::Language ilang = language::input::LANG_AUTO;
if( (value.isInteger() && value.getIntegerValue() == Integer(2)) ||
(value.isRational() && value.getRationalValue() == Rational(2)) ||
value.getValue() == "2" ||
value.getValue() == "2.0" ) {
- options::inputLanguage.set(language::input::LANG_SMTLIB_V2_0);
-
- // supported SMT-LIB version
- if(!options::outputLanguage.wasSetByUser() &&
- ( options::outputLanguage() == language::output::LANG_SMTLIB_V2_5 || options::outputLanguage() == language::output::LANG_SMTLIB_V2_6 )) {
- options::outputLanguage.set(language::output::LANG_SMTLIB_V2_0);
- *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_0);
- }
- return;
+ ilang = language::input::LANG_SMTLIB_V2_0;
} else if( (value.isRational() && value.getRationalValue() == Rational(5, 2)) ||
value.getValue() == "2.5" ) {
- options::inputLanguage.set(language::input::LANG_SMTLIB_V2_5);
-
- // supported SMT-LIB version
- if(!options::outputLanguage.wasSetByUser() &&
- options::outputLanguage() == language::output::LANG_SMTLIB_V2_0) {
- options::outputLanguage.set(language::output::LANG_SMTLIB_V2_5);
- *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_5);
- }
- return;
+ ilang = language::input::LANG_SMTLIB_V2_5;
} else if( (value.isRational() && value.getRationalValue() == Rational(13, 5)) ||
value.getValue() == "2.6" ) {
- options::inputLanguage.set(language::input::LANG_SMTLIB_V2_6);
-
- // supported SMT-LIB version
- if(!options::outputLanguage.wasSetByUser() &&
- options::outputLanguage() == language::output::LANG_SMTLIB_V2_0) {
- options::outputLanguage.set(language::output::LANG_SMTLIB_V2_6);
- *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_6);
+ ilang = language::input::LANG_SMTLIB_V2_6;
+ }
+ else if (value.getValue() == "2.6.1")
+ {
+ ilang = language::input::LANG_SMTLIB_V2_6_1;
+ }
+ else
+ {
+ Warning() << "Warning: unsupported smt-lib-version: " << value << endl;
+ throw UnrecognizedOptionException();
+ }
+ options::inputLanguage.set(ilang);
+ // also update the output language
+ if (!options::outputLanguage.wasSetByUser())
+ {
+ language::output::Language olang = language::toOutputLanguage(ilang);
+ if (options::outputLanguage() != olang)
+ {
+ options::outputLanguage.set(olang);
+ *options::out() << language::SetLanguage(olang);
}
- return;
}
- Warning() << "Warning: unsupported smt-lib-version: " << value << endl;
- throw UnrecognizedOptionException();
+ return;
} else if(key == "status") {
string s;
if(value.isAtom()) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback