Applies a list of substitutions to expr. Each substitution has the form `unary to expr', where unary is any expression which evaluates to a unary monomial, and to is either `->' for a simple substitution, or `>>' for a repeated substitution (we apply it until we reach a fixed point); for instance `x^2.y -> (x-z)*2' is a valid substitution. The list of substitutions can be empty, in this case you simply get the value of the parenthesised expression.
Another kind of substitution, which only applies to tensors, is `tensorid1 => tensorid2'; it maps the first tensorid to the second one, maybe causing a contraction. If the first tensorid doesn't appear in expr, an error is returned.