14 assert(carl::variables(poly).has(main_var));
27 if (!c.
lower().is_infty()) {
28 auto rel = c.
lower().is_strict() ? carl::Relation::GREATER : carl::Relation::GEQ;
29 if (c.
lower().value().is_root()) {
33 assert(c.
lower().value().is_cmaxmin());
34 for (
const auto& rs : c.
lower().value().cmaxmin().roots) {
36 for (
const auto& r : rs) {
42 if (!c.
upper().is_infty()) {
43 auto rel = c.
upper().is_strict() ? carl::Relation::LESS : carl::Relation::LEQ;
44 if (c.
upper().value().is_root()) {
48 assert(c.
upper().value().is_cminmax());
49 for (
const auto& rs : c.
upper().value().cminmax().roots) {
51 for (
const auto& r : rs) {
A symbolic interal whose bounds are defined by indexed root expressions.
const auto & lower() const
Return the lower bound.
const auto & upper() const
Returns the upper bound.
const IndexedRoot & section_defining() const
In case of a section, the defining indexed root is returned.
DNF to_formula(const datastructures::PolyPool &pool, carl::Variable main_var, const datastructures::SymbolicInterval &c)
Converts a datastructures::SymbolicInterval to a DNF.
MultivariateRoot as_multivariate_root(const datastructures::PolyPool &pool, carl::Variable main_var, datastructures::IndexedRoot r)
Converts an datastructures::IndexedRoot to a MultivariateRoot.
std::vector< Disjunction > DNF
carl::MultivariateRoot< Polynomial > MultivariateRoot
carl::VariableComparison< Polynomial > VariableComparison
carl::ContextPolynomial< Rational > Polynomial
Represents the i-th root of a multivariate polynomial at its main variable (given an appropriate samp...
PolyRef poly
A multivariate polynomial.
size_t index
The index, must be > 0.