25 std::optional<typet>
itype;
33 for(std::vector<monomialt::termt>::iterator
t_it=
m_it->terms.begin();
37 if(!
itype.has_value())
63 for(std::vector<monomialt::termt>::iterator
t_it=
m_it->terms.begin();
67 for(
unsigned int i=0; i <
t_it->exp; i++)
108 term.
var=symbol_expr;
156 throw "couldn't polynomialize";
166 for(std::vector<monomialt::termt>::iterator
t_it=
m_it->terms.begin();
184 std::vector<monomialt>::iterator it,
jt;
194 int res=it->compare(*
jt);
255 for(std::vector<monomialt>::iterator it=
monomials.begin();
268 for(std::vector<monomialt>::iterator it=
my_monomials.begin();
272 for(std::vector<monomialt>::iterator
jt=other.
monomials.begin();
286 std::vector<monomialt::termt>::iterator
t1,
t2;
288 t1=it->terms.begin();
289 t2=
jt->terms.begin();
291 while(
t1!=it->terms.end() &&
t2 !=
jt->terms.end())
294 int res=
t1->var.compare(
t2->var);
323 while(
t1!=it->terms.end())
329 while(
t2!=
jt->terms.end())
345 std::vector<termt>::iterator it,
jt;
354 unsigned int e1=it->exp;
355 unsigned int e2=it->exp;
356 int res=it->var.compare(
jt->var);
413 for(std::vector<monomialt>::iterator it=
monomials.begin();
417 if(it->contains(var))
439 for(std::vector<monomialt>::iterator it=
monomials.begin();
460 for(std::vector<termt>::iterator it=
terms.begin();
479 for(std::vector<termt>::iterator it=
terms.begin();
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Base class for all expressions.
bool is_constant() const
Return whether the expression is a constant.
const irep_idt & id() const
std::vector< termt > terms
int compare(monomialt &other)
bool contains(const exprt &var)
Binary multiplication Associativity is not specified.
The plus expression Associativity is not specified.
void substitute(substitutiont &substitution)
void from_expr(const exprt &expr)
std::vector< monomialt > monomials
int coeff(const exprt &expr)
void add(polynomialt &other)
int max_degree(const exprt &var)
Expression to hold a symbol (variable)
Semantic type conversion.
The unary minus expression.
std::map< exprt, exprt > substitutiont
#define UNREACHABLE
This should be used to mark dead code.
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.
API to expression classes.
const typecast_exprt & to_typecast_expr(const exprt &expr)
Cast an exprt to a typecast_exprt.
const multi_ary_exprt & to_multi_ary_expr(const exprt &expr)
Cast an exprt to a multi_ary_exprt.
const constant_exprt & to_constant_expr(const exprt &expr)
Cast an exprt to a constant_exprt.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
typet join_types(const typet &t1, const typet &t2)
Return the smallest type that both t1 and t2 can be cast to without losing information.