+/** Flags to control the behavior of has(). */
+class has_options {
+public:
+ enum {
+ algebraic = 0x0001 ///< enable algebraic matching
+ };
+};
+
+/** Flags to control the behavior of subs(). */
+class subs_options {
+public:
+ enum {
+ no_pattern = 0x0001, ///< disable pattern matching
+ subs_no_pattern = 0x0001, // for backwards compatibility
+ algebraic = 0x0002, ///< enable algebraic substitutions
+ 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,
+ // 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
+ };
+};
+
+/** Domain of an object */
+class domain {
+public:
+ enum {
+ complex,
+ real,
+ positive
+ };
+};
+
+/** Flags to control series expansion. */