Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

With NumericQ[symbol] = True, I can declare that a symbol is numeric. I want the expressions matching: $$e_{\text{i$\_$}?\text{IntegerQ}}^2$$ to be treated as numerical expressions too.

e /: NumericQ[Subscript[e, i_?IntegerQ]^2] = True;

doesn't work. Also, I can't use NumericFunction because it's too restrictive. Is there something like NumericPattern?

share|improve this question
up vote 10 down vote accepted

Here is another way: you can fool the depth-1 tag rule for UpValues with a few temporary symbols. Here is an example:

e /: Subscript[e, i_?IntegerQ] := e /: Subscript[e, i] =
    el /: el^p_ := el /: el^p =
          elp /: NumericQ[elp] = True;
          Format[elp] := TraditionalForm[Subscript["e", i]^p];
    el /: NumericQ[el] = True;
    Format[el] := TraditionalForm[Subscript["e", i]];

What this does is to substitute Subscript[e, i_?IntegerQ] by some symbol, which will print just as the original one, but will have some rules attached which will do what you need. Now,

(* True *)


(* True *)

The advantage of this method is that it is flexible. You are not tied to just powers of your subscript, it can be easily generalized to other functions.

share|improve this answer

Everything depends on what you try to do with this. First you could use Subsuperscript and get rid of one level which is introduced by your Power

(* Power[Subscript[e,3],2] *)

(* Subsuperscript[e,3,2] *)

Both forms look equally in the front-end, but now you can use TagSet to transform all e with integer-subscript to a different form which displays as it would still be the normal e:


Mathematica graphics

share|improve this answer

You can use Notation package to treat anything like function and then set whatever attributes to this function:

enter image description here

The only problem is that Notation don't support test patterns, so to make an expression numeric with only integer indexes:

enter image description here

share|improve this answer
Please try to include the code in textual form for two reasons: 1) Other users may want to copy/paste it and 2) Your answer will be better indexed for web searches. Thnx! – Dr. belisarius Dec 27 '12 at 13:25
@belisarius I didn't make it textual because those boxes inside Notation are very messy and unreadable. – swish Dec 27 '12 at 13:46
Yes, I know. I'm not suggesting to replace the images. Anyway, your choice :) – Dr. belisarius Dec 27 '12 at 13:52

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.