theory/arith/operator_elim.h
theory/arith/partial_model.cpp
theory/arith/partial_model.h
+ theory/arith/proof_checker.cpp
+ theory/arith/proof_checker.h
theory/arith/simplex.cpp
theory/arith/simplex.h
theory/arith/simplex_update.cpp
return nm->mkNode(AND, nm->mkNode(GEQ, a, l), nm->mkNode(LEQ, a, u));
}
+Rational leastIntGreaterThan(const Rational& q) { return q.floor() + 1; }
+
+Rational greatestIntLessThan(const Rational& q) { return q.ceiling() - 1; }
+
+Node negateProofLiteral(TNode n)
+{
+ auto nm = NodeManager::currentNM();
+ switch (n.getKind())
+ {
+ case Kind::GT:
+ {
+ return nm->mkNode(Kind::LEQ, n[0], n[1]);
+ }
+ case Kind::LT:
+ {
+ return nm->mkNode(Kind::GEQ, n[0], n[1]);
+ }
+ case Kind::LEQ:
+ {
+ return nm->mkNode(Kind::GT, n[0], n[1]);
+ }
+ case Kind::GEQ:
+ {
+ return nm->mkNode(Kind::LT, n[0], n[1]);
+ }
+ case Kind::EQUAL:
+ case Kind::NOT:
+ {
+ return n.negate();
+ }
+ default: Unhandled() << n;
+ }
+}
+
} // namespace arith
} // namespace theory
} // namespace CVC4
/** Make the node u >= a ^ a >= l */
Node mkBounded(Node l, Node a, Node u);
+Rational leastIntGreaterThan(const Rational&);
+
+Rational greatestIntLessThan(const Rational&);
+
+/** Negates a node in arithmetic proof normal form. */
+Node negateProofLiteral(TNode n);
+
}/* CVC4::theory::arith namespace */
}/* CVC4::theory namespace */
}/* CVC4 namespace */