summaryrefslogtreecommitdiff
path: root/src/theory/strings/arith_entail.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/strings/arith_entail.cpp')
-rw-r--r--src/theory/strings/arith_entail.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/theory/strings/arith_entail.cpp b/src/theory/strings/arith_entail.cpp
index 6a0eea41a..d9cbc4c40 100644
--- a/src/theory/strings/arith_entail.cpp
+++ b/src/theory/strings/arith_entail.cpp
@@ -30,14 +30,16 @@ namespace cvc5 {
namespace theory {
namespace strings {
+ArithEntail::ArithEntail(Rewriter* r) : d_rr(r) {}
+
bool ArithEntail::checkEq(Node a, Node b)
{
if (a == b)
{
return true;
}
- Node ar = Rewriter::rewrite(a);
- Node br = Rewriter::rewrite(b);
+ Node ar = d_rr->rewrite(a);
+ Node br = d_rr->rewrite(b);
return ar == br;
}
@@ -72,7 +74,7 @@ bool ArithEntail::check(Node a, bool strict)
Node ar = strict ? NodeManager::currentNM()->mkNode(
kind::MINUS, a, NodeManager::currentNM()->mkConst(Rational(1)))
: a;
- ar = Rewriter::rewrite(ar);
+ ar = d_rr->rewrite(ar);
if (ar.getAttribute(StrCheckEntailArithComputedAttr()))
{
@@ -93,7 +95,7 @@ bool ArithEntail::check(Node a, bool strict)
bool ArithEntail::checkApprox(Node ar)
{
- Assert(Rewriter::rewrite(ar) == ar);
+ Assert(d_rr->rewrite(ar) == ar);
NodeManager* nm = NodeManager::currentNM();
std::map<Node, Node> msum;
Trace("strings-ent-approx-debug")
@@ -139,7 +141,7 @@ bool ArithEntail::checkApprox(Node ar)
{
Node curr = toProcess.back();
Trace("strings-ent-approx-debug") << " process " << curr << std::endl;
- curr = Rewriter::rewrite(curr);
+ curr = d_rr->rewrite(curr);
toProcess.pop_back();
if (visited.find(curr) == visited.end())
{
@@ -195,7 +197,7 @@ bool ArithEntail::checkApprox(Node ar)
Node aar = aarSum.empty()
? nm->mkConst(Rational(0))
: (aarSum.size() == 1 ? aarSum[0] : nm->mkNode(PLUS, aarSum));
- aar = Rewriter::rewrite(aar);
+ aar = d_rr->rewrite(aar);
Trace("strings-ent-approx-debug")
<< "...processed fixed sum " << aar << " with " << mApprox.size()
<< " approximated monomials." << std::endl;
@@ -266,8 +268,7 @@ bool ArithEntail::checkApprox(Node ar)
Node ci = aam.second;
if (!cr.isNull())
{
- ci = ci.isNull() ? cr
- : Rewriter::rewrite(nm->mkNode(MULT, ci, cr));
+ ci = ci.isNull() ? cr : d_rr->rewrite(nm->mkNode(MULT, ci, cr));
}
Trace("strings-ent-approx-debug") << ci << "*" << ti << " ";
int ciSgn = ci.isNull() ? 1 : ci.getConst<Rational>().sgn();
@@ -324,7 +325,7 @@ bool ArithEntail::checkApprox(Node ar)
Node mn = ArithMSum::mkCoeffTerm(msum[v], vapprox);
aar = nm->mkNode(PLUS, aar, mn);
// update the msumAar map
- aar = Rewriter::rewrite(aar);
+ aar = d_rr->rewrite(aar);
msumAar.clear();
if (!ArithMSum::getMonomialSum(aar, msumAar))
{
@@ -557,7 +558,7 @@ void ArithEntail::getArithApproximations(Node a,
bool ArithEntail::checkWithEqAssumption(Node assumption, Node a, bool strict)
{
Assert(assumption.getKind() == kind::EQUAL);
- Assert(Rewriter::rewrite(assumption) == assumption);
+ Assert(d_rr->rewrite(assumption) == assumption);
Trace("strings-entail") << "checkWithEqAssumption: " << assumption << " " << a
<< ", strict=" << strict << std::endl;
@@ -633,7 +634,7 @@ bool ArithEntail::checkWithAssumption(Node assumption,
Node b,
bool strict)
{
- Assert(Rewriter::rewrite(assumption) == assumption);
+ Assert(d_rr->rewrite(assumption) == assumption);
NodeManager* nm = NodeManager::currentNM();
@@ -659,7 +660,7 @@ bool ArithEntail::checkWithAssumption(Node assumption,
Node s = nm->mkBoundVar("slackVal", nm->stringType());
Node slen = nm->mkNode(kind::STRING_LENGTH, s);
- assumption = Rewriter::rewrite(
+ assumption = d_rr->rewrite(
nm->mkNode(kind::EQUAL, x, nm->mkNode(kind::PLUS, y, slen)));
}
@@ -695,7 +696,7 @@ bool ArithEntail::checkWithAssumptions(std::vector<Node> assumptions,
bool res = false;
for (const auto& assumption : assumptions)
{
- Assert(Rewriter::rewrite(assumption) == assumption);
+ Assert(d_rr->rewrite(assumption) == assumption);
if (checkWithAssumption(assumption, a, b, strict))
{
@@ -708,7 +709,7 @@ bool ArithEntail::checkWithAssumptions(std::vector<Node> assumptions,
Node ArithEntail::getConstantBound(Node a, bool isLower)
{
- Assert(Rewriter::rewrite(a) == a);
+ Assert(d_rr->rewrite(a) == a);
Node ret;
if (a.isConst())
{
@@ -773,7 +774,7 @@ Node ArithEntail::getConstantBound(Node a, bool isLower)
else
{
ret = NodeManager::currentNM()->mkNode(a.getKind(), children);
- ret = Rewriter::rewrite(ret);
+ ret = d_rr->rewrite(ret);
}
}
}
@@ -791,7 +792,7 @@ Node ArithEntail::getConstantBound(Node a, bool isLower)
bool ArithEntail::checkInternal(Node a)
{
- Assert(Rewriter::rewrite(a) == a);
+ Assert(d_rr->rewrite(a) == a);
// check whether a >= 0
if (a.isConst())
{
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback