|
using | UVarTerm = std::unique_ptr< VarTerm > |
|
enum | Invertibility { CONSTANT = 0,
INVERTIBLE = 1,
NOT_INVERTIBLE = 2
} |
|
using | ProjectRet = std::tuple< UTerm, UTerm, UTerm > |
| Return value of Term::project (replace, projected, project). More...
|
|
using | SVal = std::shared_ptr< Value > |
|
using | VarSet = std::unordered_set< FWString > |
|
using | RenameMap = std::unordered_map< FWString, std::pair< FWString, SVal >> |
|
using | ReferenceMap = std::unordered_map< Term *, SGRef, value_hash< Term * >, value_equal_to< Term * >> |
|
using | DotsMap = std::vector< std::tuple< UTerm, UTerm, UTerm >> |
| Type that stores for each rewritten DotsTerm the associated variable and the lower and upper bound. More...
|
|
using | ScriptMap = std::vector< std::tuple< UTerm, FWString, UTermVec >> |
|
using | ArithmeticsMap = std::vector< std::unordered_map< UTerm, UTerm, value_hash< UTerm >, value_equal_to< UTerm >>> |
|
|
| LinearTerm (VarTerm const &var, int m, int n) |
|
| LinearTerm (UVarTerm &&var, int m, int n) |
|
virtual void | rename (FWString name) |
|
virtual SimplifyRet | simplify (DotsMap &dots, ScriptMap &scripts, unsigned &auxNum, bool positional, bool arithmetic) |
|
virtual ProjectRet | project (bool rename, unsigned &auxNum) |
|
virtual bool | hasVar () const |
| Whether the term contains a VarTerm. More...
|
|
virtual void | collect (VarTermBoundVec &vars, bool bound) const |
|
virtual void | collect (VarSet &vars, unsigned minLevel=0, unsigned maxLevel=std::numeric_limits< unsigned >::max()) const |
|
virtual Value | eval () const |
|
virtual bool | match (Value const &val) const |
|
virtual FWSignature | getSig () const |
|
virtual UTerm | renameVars (RenameMap &names) const |
|
virtual UGTerm | gterm (RenameMap &names, ReferenceMap &refs) const |
|
virtual unsigned | getLevel () const |
|
virtual bool | isNotNumeric () const |
|
virtual Invertibility | getInvertibility () const |
|
virtual void | print (std::ostream &out) const |
|
virtual void | unpool (UTermVec &x) const |
|
virtual UTerm | rewriteArithmetics (ArithmeticsMap &arith, unsigned &auxNum) |
|
virtual bool | operator== (Term const &other) const |
|
virtual size_t | hash () const |
|
virtual LinearTerm * | clone () const |
|
virtual bool | hasPool () const |
|
virtual void | collectIds (VarSet &vars) const |
|
virtual UTerm | replace (Defines &defs, bool replace=true) |
|
virtual double | estimate (double size, VarSet const &bound) const |
|
virtual Value | isEDB () const |
|
virtual | ~LinearTerm () |
|
bool | isZero () const |
|
virtual void | collect (VarTermSet &vars) const |
|
bool | bind (VarSet &bound) |
|
SGRef | _newRef (RenameMap &names, ReferenceMap &refs) const |
|
UGTerm | gterm () const |
|
virtual | ~Term () |
|
template<class T , class U , class V > |
void | replace (std::unique_ptr< T > &dst, std::unique_ptr< U > &&src, std::unique_ptr< V > &&alt) |
|
template<class It , class TermUnpool , class Callback > |
void | unpool (It const &begin, It const &end, TermUnpool const &f, Callback const &g) |
|
template<class Vec , class TermUnpool > |
void | unpoolJoin (Vec &vec, TermUnpool const &f) |
|
virtual | ~Printable () |
|
virtual | ~Hashable () |
|
virtual Location const & | loc () const =0 |
|
virtual void | loc (Location const &loc)=0 |
|
virtual | ~Locatable () |
|
virtual bool | operator!= (Termconst &other) const |
|
virtual | ~Comparable () |
|
virtual | ~Clonable () |
|
|
static std::unique_ptr
< LinearTerm > | create (Location const &loc, DotsMap &dots, unsigned &auxNum, UTerm &&left, UTerm &&right) |
|
static std::unique_ptr
< LinearTerm > | create (Location const &loc, ScriptMap &scripts, unsigned &auxNum, FWString name, UTermVec &&args) |
|
static FWString | uniqueName (unsigned &auxNum, char const *prefix="#X") |
| Creates a unique variable name. More...
|
|
static UTerm | uniqueVar (Location const &loc, unsigned &auxNum, unsigned level=0, const char *prefix="#X") |
| Creates a unique variable using #aux(auxNum) as name. More...
|
|
static UTerm | uniqueVal (Location const &loc, unsigned &auxNum, const char *prefix="#X") |
|
static UTerm | insert (ArithmeticsMap &arith, unsigned &auxNum, UTerm &&term) |
| Inserts a term into arith creating a new unique variable if necessary. More...
|
|
template<class T , class U > |
static void | replace (std::unique_ptr< T > &dst, std::unique_ptr< U > &&src) |
| Set dst to src if src is non-zero. More...
|
|
template<class A , class UnpoolA , class Callback > |
static void | unpool (A const &a, UnpoolA const &fA, Callback const &g) |
| Unpools a, calling g on each obtained element. More...
|
|
template<class A , class B , class UnpoolA , class UnpoolB , class Callback > |
static void | unpool (A const &a, B const &b, UnpoolA const &fA, UnpoolB const &fB, Callback const &g) |
| Unpools a and b, calculates cross product, calling g on each obtained tuple. More...
|
|
template<class It , class Unpool , class Callback > |
static void | unpool (It const &begin, It const &end, Unpool const &f, Callback const &g) |
| Iterates of [begin, end] unpooling with f, calculates cross product, calling g on each obtained tuple. More...
|
|
template<class Vec , class Unpool > |
static void | unpoolJoin (Vec &vec, Unpool const &f) |
| Unpools each element of vec using f, and move the union of all pools back to f. More...
|
|