Dear Daniel,
I believe this is somewhere in between a bug and spec.
In the Maxima manual "Lisp and Maxima" it says:
"If you intend to write lisp functions to be called at macsyma level you
should name them by names beginning with a "$". Note that all symbols
typed at lisp level are automatically read in upper case, unless you do
something like |$odeSolve| to force the case to be respected. Maxima
interprets symbols as mixed case, if the symbol has already been read
before or at the time it was first read there was not an already
existing symbol with the same letters but upper case only. Thus if you
type
(C1) Integrate;
(D1) INTEGRATE
(C2) Integ;
(D2) Integ
The symbol Integrate already existed in upper case since it is a Maxima
primitive, but INTEG, does not already exist, so the Integ is permitted.
This may seem a little bizarre, but we wish to keep old maxima code
working, which assumes that Maxima primitives may be in upper or lower
case. An advantage of this system is that if you type in lower case, you
will immediately see which are the maxima keywords and functions. "
So, in your example, y1 is regarded as a Maxima primitive while y0 is
not. How this happens?
The answer is also in the above quote. A lisp symbol $Y1 is already read
before Maxima starts
the command line input, while $Y0 is never read before. If you take a
look at line 853 of ode2.lisp,
lisp symbols such as $Y1, $Y2, $Y3, $Y4, $WR, $HEURISTIC, $%K1, $%K2 are
used. This is where
these symbols are read (or interned, in the lisp language term).
You may try:
(C11) [y0, y1, y2, y3, y4, y5];
(D11) [y0, Y1, Y2, Y3, Y4, y5]
This is exactly the behavior specified in the manual as quoted above. So
someone may call
it a part of the spec. At the same time, any of y0 through y5 cannot be
regarded as Maxima
primitives. So someone may call it a bug.
The logic above is implemented by the lisp function bothcase-implode
defined in commac.lisp.
Yasuaki Honda
Independent Developer,
Chiba, Japan
On 2002.03.13, at 09:00, Daniel Lemire wrote:
> From a recent CVS build:
>
> (C5) [y0,y1];
>
> (D5) [y0, Y1]
>
>
> _______________________________________________
> Maxima mailing list
> Maxima@www.math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>