145 const std::vector<Expression>& a,
const std::vector<Expression>& b,
const ExpressionMapping& replacements
Symbol assumptions for reasoning about bounds, constness, and evolution.
Map from symbols to their assumptions.
Definition assumptions.h:313
std::vector< Expression > MultiExpression
Vector of symbolic expressions for multi-dimensional operations.
Definition symbolic.h:89
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
SymEngine::RCP< const SymEngine::Symbol > Symbol
Reference-counted pointer to a SymEngine Symbol.
Definition symbolic.h:71
std::set< Symbol, SymEngine::RCPBasicKeyLess > SymbolSet
Ordered set of symbols.
Definition symbolic.h:95
std::set< Expression, SymEngine::RCPBasicKeyLess > ExpressionSet
Ordered set of expressions.
Definition symbolic.h:104
SymEngine::map_basic_basic ExpressionMapping
Definition symbolic.h:109
Definition assumptions.h:55
std::string expression_to_isl_str(const Expression expr)
Converts an index or bound expression to ISL syntax.
std::string expression_to_map_str(const MultiExpression &expr, const Assumptions &assums)
Converts a multi-dimensional expression to an ISL map string.
std::optional< bool > decide_nonneg(const Expression &expr, const Assumptions &assums, bool strict)
Decides expr >= 0 (> 0 if strict) under the bounds and constraints of assums with isl.
void canonicalize_map_dims(isl_map *map, const std::string &in_prefix, const std::string &out_prefix)
Canonicalizes dimension names in an ISL map.
isl_map * expression_to_may_map(isl_ctx *ctx, const MultiExpression &expr, const Assumptions &assums)
Builds the map of expression_to_map_str directly in ctx, possibly over-approximating its domain like ...
std::string constraint_to_isl_str(const Expression con)
Converts a constraint expression to ISL string format.
bool expressions_to_intersection_maps(isl_ctx *ctx, const MultiExpression &expr1, const MultiExpression &expr2, const Symbol indvar, const Assumptions &assums1, const Assumptions &assums2, isl_map **map_1, isl_map **map_2, isl_map **map_3)
Builds the three maps of expressions_to_intersection_map_str directly in ctx, without parsing.
std::tuple< std::string, std::string, std::string > expressions_to_intersection_map_str(const MultiExpression &expr1, const MultiExpression &expr2, const Symbol indvar, const Assumptions &assums1, const Assumptions &assums2)
Converts two expressions to ISL format for intersection analysis.
bool vectors_of_expressions_match(const std::vector< Expression > &a, const std::vector< Expression > &b)
ExpressionSet generate_constraints(SymbolSet &syms, const Assumptions &assums, SymbolSet &seen)
Generates constraint expressions from assumptions.
Symbolic system for integer-based symbol analysis.