subs_algebraic = 0x0002, // for backwards compatibility
pattern_is_product = 0x0004, ///< used internally by expairseq::subschildren()
pattern_is_not_product = 0x0008, ///< used internally by expairseq::subschildren()
- no_index_renaming = 0x0010
+ no_index_renaming = 0x0010,
+ // To indicate that we want to substitue an index by something that is
+ // is not an index. Without this flag the index value would be
+ // substituted in that case.
+ really_subs_idx = 0x0020
};
};
if (it != m.end()) {
// Substitution index->index
- if (is_a<idx>(it->second))
+ if (is_a<idx>(it->second) || (options & subs_options::really_subs_idx))
return it->second;
// Otherwise substitute value