summaryrefslogtreecommitdiff
path: root/src/parser/smt
diff options
context:
space:
mode:
authorChristopher L. Conway <christopherleeconway@gmail.com>2010-06-30 16:23:47 +0000
committerChristopher L. Conway <christopherleeconway@gmail.com>2010-06-30 16:23:47 +0000
commit3ca6688f01d6bcaa4a4583036e05c7f1a4e851f6 (patch)
tree69bf6405b3a9f3d11a5ad4b923e421fdba9c5424 /src/parser/smt
parent206ceb28ca03fae452b420ad517a0b5bc82dab04 (diff)
Parsing support for SMT divisions: LRA, QF_UFLIA, QF_UFLRA, QF_UFNRA, UFNIA
Diffstat (limited to 'src/parser/smt')
-rw-r--r--src/parser/smt/smt.cpp20
-rw-r--r--src/parser/smt/smt.h10
2 files changed, 25 insertions, 5 deletions
diff --git a/src/parser/smt/smt.cpp b/src/parser/smt/smt.cpp
index 53c58e2e6..bbec3299f 100644
--- a/src/parser/smt/smt.cpp
+++ b/src/parser/smt/smt.cpp
@@ -121,6 +121,11 @@ bool Smt::logicIsSet() {
return d_logicSet;
}
+inline void Smt::addUf() {
+ addTheory(Smt::THEORY_EMPTY);
+ addOperator(kind::APPLY_UF);
+}
+
/**
* Sets the logic for the current benchmark. Declares any logic and theory symbols.
*
@@ -152,17 +157,26 @@ void Smt::setLogic(const std::string& name) {
break;
case QF_UFIDL:
+ case QF_UFLIA:
addTheory(THEORY_INTS);
- // falling-through on purpose, to add UF part of UFIDL
+ addUf();
+ break;
+
+ case QF_UFLRA:
+ case QF_UFNRA:
+ addTheory(THEORY_REALS);
+ addUf();
+ break;
case QF_UF:
- addTheory(THEORY_EMPTY);
- addOperator(kind::APPLY_UF);
+ addUf();
break;
case AUFLIA:
case AUFLIRA:
case AUFNIRA:
+ case LRA:
+ case UFNIA:
case QF_AUFBV:
case QF_AUFLIA:
case QF_BV:
diff --git a/src/parser/smt/smt.h b/src/parser/smt/smt.h
index c6a15b335..d08e25ba9 100644
--- a/src/parser/smt/smt.h
+++ b/src/parser/smt/smt.h
@@ -36,9 +36,10 @@ class Smt : public Parser {
public:
enum Logic {
- AUFLIA,
+ AUFLIA, // +p and -p?
AUFLIRA,
AUFNIRA,
+ LRA,
QF_AUFBV,
QF_AUFLIA,
QF_AX,
@@ -50,7 +51,11 @@ public:
QF_RDL,
QF_SAT,
QF_UF,
- QF_UFIDL
+ QF_UFIDL,
+ QF_UFLIA,
+ QF_UFLRA,
+ QF_UFNRA,
+ UFNIA
};
enum Theory {
@@ -102,6 +107,7 @@ public:
private:
void addArithmeticOperators();
+ void addUf();
static std::hash_map<const std::string, Logic, CVC4::StringHashFunction> newLogicMap();
};
}/* CVC4::parser namespace */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback