summaryrefslogtreecommitdiff
path: root/src/parser/smt2/smt2.h
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2018-06-04 19:28:44 -0700
committerAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-06-04 21:28:44 -0500
commitaf5832b414fbee30904014aaf68a7f3b277b693d (patch)
tree5b6738aa895913c2858ff8751c573c51c6bd7b99 /src/parser/smt2/smt2.h
parent1e8a4e25751263a923a8d4cfd4d404fc0d24aa03 (diff)
Only enable transcendentals if logic is N[I]RAT (#2052)
Diffstat (limited to 'src/parser/smt2/smt2.h')
-rw-r--r--src/parser/smt2/smt2.h40
1 files changed, 25 insertions, 15 deletions
diff --git a/src/parser/smt2/smt2.h b/src/parser/smt2/smt2.h
index 3def5696b..36c2479ad 100644
--- a/src/parser/smt2/smt2.h
+++ b/src/parser/smt2/smt2.h
@@ -40,21 +40,23 @@ class Smt2 : public Parser {
friend class ParserBuilder;
public:
- enum Theory {
- THEORY_ARRAYS,
- THEORY_BITVECTORS,
- THEORY_CORE,
- THEORY_DATATYPES,
- THEORY_INTS,
- THEORY_REALS,
- THEORY_REALS_INTS,
- THEORY_QUANTIFIERS,
- THEORY_SETS,
- THEORY_STRINGS,
- THEORY_UF,
- THEORY_FP,
- THEORY_SEP
- };
+ enum Theory
+ {
+ THEORY_ARRAYS,
+ THEORY_BITVECTORS,
+ THEORY_CORE,
+ THEORY_DATATYPES,
+ THEORY_INTS,
+ THEORY_REALS,
+ THEORY_TRANSCENDENTALS,
+ THEORY_REALS_INTS,
+ THEORY_QUANTIFIERS,
+ THEORY_SETS,
+ THEORY_STRINGS,
+ THEORY_UF,
+ THEORY_FP,
+ THEORY_SEP
+ };
private:
bool d_logicSet;
@@ -186,6 +188,12 @@ public:
ss << "cannot declare or define symbol `" << name << "'; symbols starting with . and @ are reserved in SMT-LIB";
parseError(ss.str());
}
+ else if (isOperatorEnabled(name))
+ {
+ std::stringstream ss;
+ ss << "Symbol `" << name << "' is shadowing a theory function symbol";
+ parseError(ss.str());
+ }
}
void includeFile(const std::string& filename);
@@ -386,6 +394,8 @@ private:
void addArithmeticOperators();
+ void addTranscendentalOperators();
+
void addBitvectorOperators();
void addStringOperators();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback