16 #include <type_traits>
24 template<
typename Pol>
29 template<
typename Pol>
34 template<
typename Pol>
71 CARL_LOG_ERROR(
"carl.maplestream",
"Bitvectors are not supported by Maple.");
78 CARL_LOG_ERROR(
"carl.maplestream",
"Uninterpreted equalities are not supported by Maple.");
82 CARL_LOG_ERROR(
"carl.maplestream",
"Printing exists or forall is not implemented yet.");
91 void write(
const Monomial::Content::value_type& m) {
92 if (m.second == 0) *
this <<
"1";
93 else if (m.second == 1) *
this << m.first;
94 else *
this << m.first <<
"^" << m.second;
104 template<
typename Coeff>
109 for (
auto it = mp.
rbegin(); it != mp.
rend(); ++it) {
110 if (it != mp.
rbegin()) *
this <<
" + ";
127 template<
typename Coeff>
139 template<
typename Coeff>
143 for (std::size_t i = 0; i < up.
coefficients().size(); ++i) {
144 if (i > 0) *
this <<
" + ";
147 if (
exp == 0) *
this <<
" " << coeff;
163 default: *
this <<
"?";
break;
176 template<
typename Pol>
183 write(
static_cast<const std::decay_t<T>&
>(t));
#define CARL_LOG_ERROR(channel, msg)
std::vector< Formula< Poly > > Formulas
Interval< Number > exp(const Interval< Number > &i)
bool is_zero(const Interval< Number > &i)
Check if this interval is a point-interval containing 0.
VariableType
Several types of variables are supported.
auto stream_joined(const std::string &glue, const T &v)
Allows to easily output some container with all elements separated by some string.
bool is_one(const Interval< Number > &i)
Check if this interval is a point-interval containing 1.
std::ostream & operator<<(std::ostream &os, const MapleStream &ms)
A Variable represents an algebraic variable that can be used throughout carl.
std::string name() const
Retrieves the name of the variable.
This class represents a univariate polynomial with coefficients of an arbitrary type.
bool is_constant() const
Checks whether the polynomial is constant with respect to the main variable.
const std::vector< Coefficient > & coefficients() const &
Retrieves the coefficients defining this polynomial.
Variable main_var() const
Retrieves the main variable of this polynomial.
NumberType constant_part() const
Returns the constant part of this polynomial.
The general-purpose multivariate polynomial class.
const Term< Coeff > & lterm() const
The leading term.
std::size_t nr_terms() const
Calculate the number of terms.
The general-purpose monomials.
std::shared_ptr< const Monomial > Arg
const Content & exponents() const
Coefficient & coeff()
Get the coefficient.
Monomial::Arg & monomial()
Get the monomial.
Represent a polynomial (in)equality against zero.
Relation relation() const
Represent an SMT formula, which can be an atom for some background theory or a boolean combination of...
const VariableAssignment< Pol > & variable_assignment() const
const Formula & subformula() const
const VariableComparison< Pol > & variable_comparison() const
carl::Variable::Arg boolean() const
const Constraint< Pol > & constraint() const
const Formulas< Pol > & subformulas() const
void write(const Monomial::Content::value_type &m)
void write(const VariableType &vt)
MapleStream & operator<<(std::ostream &(*os)(std::ostream &))
void write(const Monomial::Arg &m)
void write(const UnivariatePolynomial< Coeff > &up)
void write(const Formula< Pol > &f)
void write(const Monomial &m)
void write(const Formulas< Pol > &f, const std::string &op)
std::stringstream mStream
void write(const Constraint< Pol > &c)
void write(const MultivariatePolynomial< Coeff > &mp)
void write(const Variable &v)
void assertFormula(const Formula< Pol > &formula)
void write(const Term< Coeff > &t)
MapleStream & operator<<(T &&t)