diff options
author | Andres Noetzli <andres.noetzli@gmail.com> | 2018-06-13 00:30:45 -0700 |
---|---|---|
committer | Andres Noetzli <andres.noetzli@gmail.com> | 2018-06-13 00:30:45 -0700 |
commit | 783e22af1d99a6423df01f1c53801cca179ecbb0 (patch) | |
tree | bdc99cfe082df182d27e730cfe0222e8f5b5309b | |
parent | 4196af23fdfe379fe93647ddd2ba9a12d5756c3a (diff) |
Better arith support in evaluator
-rw-r--r-- | src/theory/evaluator.cpp | 31 |
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]) |