This is more an "academical" question:
Is there a token which neither can be redefined to be \outer nor can be affected by \uppercase/\lowercase no matter what \lccodes/\uccodes are current?
Assuming that functionality of the \outer-primitive is available/does not get disabled.
\let\outer\relaxshould solve the problem ;-) – Phelype Oleinik Jan 14 '21 at 19:12\outerin my code. ;-) One token not to be refedinable in terms of\outerand not affectable by\uppercase/\lowercasewould be nice, e.g., with macros that insert sentinel-tokens for list-processing. The sentinel-token should not be transformable to s.th. else. The sentinel should not be redefinable in terms of\outeras that would break its usage with (internal) macros where it is inserted automatically as a compoonent of arguments. It is rather an academical/moot question. – John Smith Jan 14 '21 at 19:18\(upp|low)ercasechange all character tokens (regardless of catcode, and assuming they have a proper\(u|l)ccode), so you are looking for a non-character token, which are control sequence (or symbol) tokens, which are all redefinable. (Discarding internal frozen TeX tokens, like\endwrite, that cannot be redefined, but can't be used in your code either). – Phelype Oleinik Jan 14 '21 at 19:41\outertokens can't appear in the argument to anything (including\(upp|low)ercase), so the answer to your question is “any already\outertoken”. This raises an error\outer\def\x{y} \lowercase{\outer\def\x{z}} \show\x, but still redefines\x... – Phelype Oleinik Jan 14 '21 at 19:45\outerare (regardless error-messages when using them inside\lowercase/\uppercase) not affected by\uppercase/\lowercasebut (without wrapping them into\uppercase/\lowercase) can be redefined in terms of\outer:\outer\def\x{y}\outer\def\x{z}\bye. The condition of not being redefinable in terms of\outeris not strictly fulfilled for outer-tokens. ;-) – Ulrich Diez Jan 14 '21 at 19:56\x”. My remark was clinging on the fact there's an error, so anyone sensible would stop there and the redefinition would not happen ;-) – Phelype Oleinik Jan 14 '21 at 20:00\outertokens can't appear in the argument to anything" Some more nitpicking:\outer-tokens can occur in arguments of macros if they are "hit" by\noexpandright before macro-expansion takes place:\def\foo#1{#1}\outer\def\x{y}\expandafter\foo\expandafter{\noexpand\x}\bye. – Ulrich Diez Jan 14 '21 at 20:01\letto\relax, so they aren't technically\outeranymore. – Phelype Oleinik Jan 14 '21 at 20:09