summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2018-06-13 00:30:45 -0700
committerAndres Noetzli <andres.noetzli@gmail.com>2018-06-13 00:30:45 -0700
commit783e22af1d99a6423df01f1c53801cca179ecbb0 (patch)
treebdc99cfe082df182d27e730cfe0222e8f5b5309b
parent4196af23fdfe379fe93647ddd2ba9a12d5756c3a (diff)
Better arith support in evaluator
-rw-r--r--src/theory/evaluator.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/theory/evaluator.cpp b/src/theory/evaluator.cpp
index 48696b1a0..5355f4383 100644
--- a/src/theory/evaluator.cpp
+++ b/src/theory/evaluator.cpp
@@ -127,6 +127,25 @@ EvalResult Evaluator::evalInternal(TNode n,
break;
}
+ case kind::MULT:
+ {
+ Integer res = results[currNode[0]].d_int;
+ for (size_t i = 1, end = currNode.getNumChildren(); i < end; i++)
+ {
+ res = res * results[currNode[i]].d_int;
+ }
+ results[currNode] = EvalResult(res);
+ break;
+ }
+
+ case kind::GEQ:
+ {
+ const Integer& x = results[currNode[0]].d_int;
+ const Integer& y = results[currNode[1]].d_int;
+ results[currNode] = EvalResult(x >= y);
+ break;
+ }
+
case kind::CONST_STRING:
results[currNode] = EvalResult(currNodeVal.getConst<String>());
break;
@@ -357,6 +376,18 @@ EvalResult Evaluator::evalInternal(TNode n,
break;
}
+ case EvalResult::INTEGER:
+ {
+ results[currNode] = EvalResult(lhs.d_int == rhs.d_int);
+ break;
+ }
+
+ case EvalResult::STRING:
+ {
+ results[currNode] = EvalResult(lhs.d_str == rhs.d_str);
+ break;
+ }
+
default:
{
Trace("evaluator") << "Theory " << Theory::theoryOf(currNode[0])
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback