summaryrefslogtreecommitdiff
path: root/src/printer
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@gmail.com>2011-12-06 00:34:32 +0000
committerMorgan Deters <mdeters@gmail.com>2011-12-06 00:34:32 +0000
commit00dc8a9ee3e893e86ccbcdf192617793b2754eb1 (patch)
treed1a00ea543492a1fac732c78b81020dfddfa3c40 /src/printer
parentc232c1054d0635f4fcd136c3cb2038fa57538e6b (diff)
fix errors in smt-lib2 output; needed for debugging
Diffstat (limited to 'src/printer')
-rw-r--r--src/printer/smt2/smt2_printer.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/printer/smt2/smt2_printer.cpp b/src/printer/smt2/smt2_printer.cpp
index 0f5fcd73b..43649aa21 100644
--- a/src/printer/smt2/smt2_printer.cpp
+++ b/src/printer/smt2/smt2_printer.cpp
@@ -70,7 +70,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
switch(n.getKind()) {
case kind::TYPE_CONSTANT:
switch(n.getConst<TypeConstant>()) {
- case BOOLEAN_TYPE: out << "Boolean"; break;
+ case BOOLEAN_TYPE: out << "Bool"; break;
case REAL_TYPE: out << "Real"; break;
case INTEGER_TYPE: out << "Int"; break;
default:
@@ -103,7 +103,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
case kind::CONST_INTEGER: {
Integer i = n.getConst<Integer>();
if(i < 0) {
- out << "(- " << i << ')';
+ out << "(- " << -i << ')';
} else {
out << i;
}
@@ -112,12 +112,21 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
case kind::CONST_RATIONAL: {
Rational r = n.getConst<Rational>();
if(r < 0) {
- out << "(- " << r << ')';
+ if(r.getDenominator() == 1) {
+ out << "(- " << -r << ')';
+ } else {
+ out << "(- (/ " << (-r).getNumerator() << ' ' << (-r).getDenominator() << "))";
+ }
} else {
- out << r;
+ if(r.getDenominator() == 1) {
+ out << r;
+ } else {
+ out << "(/ " << r.getNumerator() << ' ' << r.getDenominator() << ')';
+ }
}
break;
}
+
default:
// fall back on whatever operator<< does on underlying type; we
// might luck out and be SMT-LIB v2 compliant
@@ -163,6 +172,8 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
case kind::MINUS:
case kind::UMINUS:
case kind::DIVISION:
+ case kind::INTS_DIVISION:
+ case kind::INTS_MODULUS:
case kind::LT:
case kind::LEQ:
case kind::GT:
@@ -275,6 +286,8 @@ static string smtKindString(Kind k) throw() {
case kind::MINUS: return "-";
case kind::UMINUS: return "-";
case kind::DIVISION: return "/";
+ case kind::INTS_DIVISION: return "div";
+ case kind::INTS_MODULUS: return "mod";
case kind::LT: return "<";
case kind::LEQ: return "<=";
case kind::GT: return ">";
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback