}
}
-struct ArithElimOpAttributeId
-{
-};
-typedef expr::Attribute<ArithElimOpAttributeId, Node> ArithElimOpAttribute;
-
Node TheoryArithPrivate::eliminateOperatorsRec(Node n)
{
- ArithElimOpAttribute aeoa;
Trace("arith-elim") << "Begin elim: " << n << std::endl;
NodeManager* nm = NodeManager::currentNM();
std::unordered_map<Node, Node, TNodeHashFunction> visited;
}
else if (it == visited.end())
{
- if (cur.hasAttribute(aeoa))
- {
- visited[cur] = cur.getAttribute(aeoa);
- }
- else
+ visited[cur] = Node::null();
+ visit.push_back(cur);
+ for (const Node& cn : cur)
{
- visited[cur] = Node::null();
- visit.push_back(cur);
- for (const Node& cn : cur)
- {
- visit.push_back(cn);
- }
+ visit.push_back(cn);
}
}
else if (it->second.isNull())
// are defined in terms of other non-standard operators.
ret = eliminateOperatorsRec(retElim);
}
- cur.setAttribute(aeoa, ret);
visited[cur] = ret;
}
} while (!visit.empty());
regress0/arith/issue3413.smt2
regress0/arith/issue3480.smt2
regress0/arith/issue3683.smt2
+ regress0/arith/issue4525.smt2
regress0/arith/ite-lift.smt2
regress0/arith/leq.01.smtv1.smt2
regress0/arith/miplib.cvc