57 Ex::iterator
one, Ex::iterator two,
58 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2,
59 bool literal_wildcards=
false);
65 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2);
68 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2);
71 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2,
72 bool literal_wildcards=
false);
74 Ex::iterator
one, Ex::iterator two,
75 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2,
76 bool literal_wildcards=
false);
79 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2,
80 bool literal_wildcards=
false);
83 Ex::iterator
one, Ex::iterator two,
84 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2);
86 Ex::iterator
one, Ex::iterator two,
87 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2);
89 Ex::iterator
one, Ex::iterator two,
90 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2,
91 bool literal_wildcards=
false);
93 Ex::iterator
one, Ex::iterator two,
94 int mod_prel=-2,
bool checksets=
true,
int compare_multiplier=-2,
95 bool literal_wildcards=
false);
129 bool operator()(Ex::iterator first, Ex::iterator second)
const;
257 Ex::sibling_iterator
lhs, Ex::sibling_iterator tofind,
258 Ex::sibling_iterator st, Ex::iterator conditions);
268 Ex::sibling_iterator
lhs, Ex::sibling_iterator tofind,
269 Ex::sibling_iterator st, Ex::iterator conditions);
322 bool ignore_implicit_indices=
false);
337 Ex::sibling_iterator two,
bool fix_one=
false) ;
347 int can_move_adjacent(Ex::iterator prod,
const std::vector<Ex::sibling_iterator>& factors, Ex::sibling_iterator to_move);
360 bool nobrackets=
false,
362 bool ignore_parent_rel=
false);
373 std::string
tab()
const;
408bool operator<(
const cadabra::Ex::iterator&,
const cadabra::Ex::iterator&);
bool operator<(const cadabra::Ex::iterator &, const cadabra::Ex::iterator &)
Definition Compare.cc:1777
std::ostream & operator<<(std::ostream &, cadabra::Ex_comparator::useprops_t up)
Definition Compare.cc:1787
match_t match_subsum(const Ex &, Ex::sibling_iterator lhs, Ex::sibling_iterator tofind, Ex::sibling_iterator st, Ex::iterator conditions)
Find a sub-sum in a sum.
Definition Compare.cc:1048
match_t report(match_t r) const
Definition Compare.cc:453
Ex_comparator(const Properties &)
Definition Compare.cc:435
int can_swap_components(Ex::iterator one, Ex::iterator two, match_t subtree_comparison)
Wrapper for can_swap which is meant for objects that have implicit indices.
Definition Compare.cc:1245
std::map< nset_t::iterator, Ex::iterator, nset_it_less > subtree_replacement_map_t
Map for the replacement of entire subtrees (object patterns).
Definition Compare.hh:284
void clear()
Reset the object for a new match.
Definition Compare.cc:285
bool lhs_contains_dummies
Flag to indicate whether additional care must be taken to handle dummies in the lhs of the pattern.
Definition Compare.hh:304
multiplier_t term_ratio
Definition Compare.hh:299
int can_move_to_front(Ex &, Ex::iterator prod, Ex::sibling_iterator one)
Determine whether object 'one' can be moved to be the first factor in the given product.
Definition Compare.cc:1235
int can_move_adjacent(Ex::iterator prod, Ex::sibling_iterator one, Ex::sibling_iterator two, bool fix_one=false)
Determine whether object 'one' and 'two' can be moved next to each other by moving either one or the ...
Definition Compare.cc:1180
match_t match_subproduct(const Ex &, Ex::sibling_iterator lhs, Ex::sibling_iterator tofind, Ex::sibling_iterator st, Ex::iterator conditions)
Find a sub-product in a product.
Definition Compare.cc:954
match_t equal_subtree(Ex::iterator i1, Ex::iterator i2, useprops_t use_props=useprops_t::always, bool ignore_parent_rel=false)
Match two subtrees taking into account symbol properties.
Definition Compare.cc:308
int can_swap(Ex::iterator one, Ex::iterator two, match_t subtree_comparison, bool ignore_implicit_indices=false)
Determine whether obj and obj+1 be exchanged?
Definition Compare.cc:1511
useprops_t
Definition Compare.hh:212
@ not_at_top
Definition Compare.hh:214
@ never
Definition Compare.hh:215
@ always
Definition Compare.hh:213
bool should_swap(Ex::iterator obj, match_t subtree_comparison)
Determine whether two objects should be swapped according to the available SortOrder properties.
Definition Compare.cc:1322
bool can_swap_different_indexsets(Ex::iterator obj1, Ex::iterator obj2)
Definition Compare.cc:1485
int can_swap_sum_sum(Ex::iterator sum1, Ex::iterator sum2, bool)
Definition Compare.cc:1439
int can_swap_sum_obj(Ex::iterator sum, Ex::iterator obj, bool)
Definition Compare.cc:1403
bool name_match_with_autodeclare(Ex::sibling_iterator one, Ex::sibling_iterator two) const
Match the name elements of a node, but take into account that one of them can be an autodeclare name ...
Definition Compare.cc:943
replacement_map_t index_value_map
Map for matching of index names to index values.
Definition Compare.hh:290
void set_value_matches_index(bool)
Determine whether Coordinates in the pattern (first argument to functions below) can match against In...
Definition Compare.cc:440
static int offset
Definition Compare.hh:380
match_t match_subtree(const Ex &, Ex::iterator i1, Ex::iterator i2, Ex::iterator conditions)
Match two subtrees, new-style equal_subtree that handles conditions; this is what substitute uses.
Definition Compare.cc:294
int can_swap_ilist_ilist(Ex::iterator obj1, Ex::iterator obj2)
Definition Compare.cc:1456
int can_swap_prod_prod(Ex::iterator prod1, Ex::iterator prod2, bool)
Definition Compare.cc:1387
std::string tab() const
Definition Compare.cc:445
const Properties & properties
Definition Compare.hh:350
bool value_matches_index
Definition Compare.hh:352
int can_swap_prod_sum(Ex::iterator prod, Ex::iterator sum, bool)
Definition Compare.cc:1422
match_t compare(const Ex::iterator &, const Ex::iterator &, bool nobrackets=false, useprops_t use_props=useprops_t::always, bool ignore_parent_rel=false)
Internal entry point.
Definition Compare.cc:493
subtree_replacement_map_t subtree_replacement_map
Definition Compare.hh:285
std::vector< Ex::sibling_iterator > factor_locations
Information to keep track of where individual factors/terms in a sub-product/sub-sum were found,...
Definition Compare.hh:297
std::vector< int > factor_moving_signs
Definition Compare.hh:298
int can_swap_prod_obj(Ex::iterator prod, Ex::iterator obj, bool)
Definition Compare.cc:1362
bool satisfies_conditions(Ex::iterator conditions, std::string &error)
Check whether the a match found by calling equal_subtree or match_subproduct satisfies the conditions...
Definition Compare.cc:1606
match_t
Definition Compare.hh:201
@ no_match_less
Definition Compare.hh:208
@ match_index_less
Definition Compare.hh:204
@ node_match
Definition Compare.hh:202
@ no_match_indexpos_greater
Definition Compare.hh:207
@ subtree_match
Definition Compare.hh:203
@ match_index_greater
Definition Compare.hh:205
@ no_match_greater
Definition Compare.hh:209
@ no_match_indexpos_less
Definition Compare.hh:206
replacement_map_t replacement_map
Definition Compare.hh:280
std::map< Ex, Ex, tree_exact_less_no_wildcards_obj > replacement_map_t
Map for the replacement of nodes (indices, patterns).
Definition Compare.hh:279
Ex_is_equivalent(const Properties &)
Definition Compare.cc:1751
bool operator()(const Ex &, const Ex &)
Definition Compare.cc:1756
const Properties & properties
Definition Compare.hh:392
Ex_is_less(const Properties &, int mod_prel)
Definition Compare.cc:1763
const Properties & properties
Definition Compare.hh:400
int mod_prel
Definition Compare.hh:401
bool operator()(const Ex &, const Ex &)
Definition Compare.cc:1768
Basic storage class for symbolic mathemematical expressions.
Definition Storage.hh:165
Class holding a collection of properties attached to expressions.
Definition Props.hh:237
tree_equal_obj(const Properties *)
Definition Compare.cc:214
const Properties * properties
Definition Compare.hh:120
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:219
const Properties * properties
Definition Compare.hh:155
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:269
tree_exact_equal_mod_prel_obj(const Properties *)
const Properties * properties
Definition Compare.hh:147
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:254
tree_exact_equal_obj(const Properties *)
Compare for indexmap_t.
Definition Compare.hh:165
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:274
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:264
const Properties * properties
Definition Compare.hh:139
tree_exact_less_mod_prel_obj(const Properties *)
Definition Compare.cc:259
tree_exact_less_no_wildcards_mod_prel_obj(const Properties *)
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:249
const Properties * properties
Definition Compare.hh:186
tree_exact_less_no_wildcards_obj()
Definition Compare.cc:239
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:244
const Properties * properties
Definition Compare.hh:178
tree_exact_less_no_wildcards_obj(const Properties *)
tree_exact_less_obj(const Properties *)
Definition Compare.cc:224
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:229
const Properties * properties
Definition Compare.hh:131
const Properties * properties
Definition Compare.hh:112
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:209
tree_less_modprel_obj(const Properties *)
Definition Compare.cc:204
bool operator()(const Ex &first, const Ex &second) const
Definition Compare.cc:199
const Properties * properties
Definition Compare.hh:104
tree_less_obj(const Properties *)
Definition Compare.cc:194
int subtree_compare(const Properties *properties, Ex::iterator one, Ex::iterator two, int mod_prel, bool, int compare_multiplier, bool literal_wildcards)
Basic building block subtree comparison function for tensors without dummy indices,...
Definition Compare.cc:27
Functions to handle the exchange properties of two or more symbols in a product.
Definition Adjform.cc:83
bool subtree_exact_equal(const Properties *properties, Ex::iterator one, Ex::iterator two, int mod_prel, bool checksets, int compare_multiplier, bool literal_wildcards)
Definition Compare.cc:186
Multiplier multiplier_t
Definition Storage.hh:43
bool tree_exact_equal(const Properties *properties, const Ex &one, const Ex &two, int mod_prel, bool checksets, int compare_multiplier, bool literal_wildcards)
Definition Compare.cc:159
bool tree_equal(const Properties *properties, const Ex &one, const Ex &two, int mod_prel, bool checksets, int compare_multiplier)
Definition Compare.cc:144
void one(rset_t::iterator &num)
Definition Storage.cc:1158
bool tree_less(const Properties *properties, const Ex &one, const Ex &two, int mod_prel, bool checksets, int compare_multiplier)
Various comparison functions, some exact, some with pattern logic.
Definition Compare.cc:139
Ex lhs(Ex_ptr ex)
Definition py_ex.cc:380
bool subtree_equal(const Properties *properties, Ex::iterator one, Ex::iterator two, int mod_prel, bool checksets, int compare_multiplier)
Definition Compare.cc:171
bool subtree_less(const Properties *properties, Ex::iterator one, Ex::iterator two, int mod_prel, bool checksets, int compare_multiplier)
Definition Compare.cc:164
bool subtree_exact_less(const Properties *properties, Ex::iterator one, Ex::iterator two, int mod_prel, bool checksets, int compare_multiplier, bool literal_wildcards)
Definition Compare.cc:178
bool tree_exact_less(const Properties *properties, const Ex &one, const Ex &two, int mod_prel, bool checksets, int compare_multiplier, bool literal_wildcards)
Definition Compare.cc:149