Should not \@ifdefinable be changed so that it does not check
\@ifundefined? This will make the implementation of different defining
command simpler and clearer. (As I would rather not get into the LaTeX
trickery of temporarily canceling \@ifundefined in \@ifdefinable, I would
prefer making my own version of \@ifdefinable which do not check

  I get the following variations; all should check \@ifdefinable without
\@ifundefined, but differ in the other respects:
    new         If undefined, then define, else error.
    renew       If defined, then define, else error.
    provide     If undefined, then define, else do nothing.
    override    If define, then define, else do nothing.

(I do not want to go much into the context, but the problem shows up when
trying to do new variations of \newcommand, \newenvironment, \newobject,

  Hans Aberg
                  * Email: Hans Aberg <mailto:[log in to unmask]>
                  * AMS member listing: <>