If we do add more variables, I think we would want to keep using lowercase for setvar variables and uppercase for class variables, so that the only difference is the decoration. The colors are hard for some people to distinguish, and knowing that lower/upper case means setvar/class is important. (We make an exception with symbols-as-class-variables, but we have the dotted underline to indicate that, after long discussions about the problem.)
While I will agree that decorated variables can be useful in certain
carefully chosen situations, overall I tend to dislike them except as a
last resort. I think they can be abused in subtle ways that can be
detrimental. If we do make them official, I would prefer that they be
moved up from JBN's mathbox on an as-needed basis rather than doing a
blanket move of the whole JBN collection.
There is a fine line between decorated variables being helpful and being confusing. Maybe I have mild dislexia or something, but when I see a complex expression full of x, x', x'' I sometimes tend to see a jumble of x's and have trouble keeping them mentally distinguished. On occasion I've actually rewritten (on paper) a complicated published expression with x, x', x'', using x, y, z in order to grasp the whole expression more clearly. In a Metamath proof, an individual step can sometimes be very long, and (for me) the difficulty of reading a long expression would grow considerably if it used only x, x', x''.
Here's what I wrote in an email in 2009:
...we probably disagree about primed and subscripted variables. I see
them as a "last resort" when we run out of letters, and such a theorem
is very rare (has never occurred in the main
set.mm). For "symmetry"
[that you mention] I just group the letters; instead of x and x', I just
use x and y, etc. Sometimes [...] if I'm just consulting a book section
quickly, I might have to dig back in the book to see if [a primed
variable] is just a variable name or an operation. Similarly for
subscripted variables, which are normally used for members of a sequence
- basically I find them mildly distracting in a textbook when overused,
and it can be visually easier to distinguish i and j rather than i_1 and
i_2 with tiny subscripts.
There are a couple of minor impacts on metamath.exe I'll mention.
For many years
set.mm had maybe a dozen of each of the 3 variable types. In 'show statement .../full', the list of "optional" variables available was small, and everything would usually fit conveniently on a terminal screen. In 2010, all 26 letters were added for setvar and class variables; the /full list became much larger but still tolerable. If we add the JBN variables, /full becomes rather annoying, as you can see with any theorem after JBN's mathbox, requiring scrolling through several screenfuls. Perhaps /full isn't used much and most people may not care, but it is one side effect of adding more variables that we should at least be aware of.
Another small issue is that metamath.exe was written without anticipating a large number of variables, and the list of all (active) variables available in the current scope is reproduced for every $p statement so that they can be available in case a dummy variable is needed by the proof. There are better ways to store this, of course, but it is not a simple change to the program. Originally, the memory overhead to hold the active variables this way was small. Now, with 30K $p statements, each additional variable near the beginning of
set.mm incurs 30K x 8 = 1/4 MB of overhead. This is one of the reasons JBN's mathbox was moved near the end. Maybe this is a minor issue with today's CPU speeds and memory, but I thought I would mention it.
Norm