0

Run Quit, then

Unprotect@AbelianGroup;
AbelianGroup[v_] = 0;
Protect@AbelianGroup;

where instead of AbelianGroup you can pick any of Select[Names["System`*"], Attributes@# == {Protected, ReadProtected} &].

You get Set::write: Tag AbelianGroup in AbelianGroup[v_] is Protected. >>. However, if you run the same thing again, there's no message. There's also no message if you do Quit again and run the following code mentioning the symbol once before unprotecting:

AbelianGroup;
Unprotect@AbelianGroup;
AbelianGroup[v_] = 0;
Protect@AbelianGroup;

Is this a bug?

I have

$Version
"10.4.1 for Microsoft Windows (64-bit) (April 11, 2016)"
masterxilo
  • 5,739
  • 17
  • 39
  • 4
    The behavior would be due to the fact that the symbols are stubs up until they are invoked/touched (this apparently is the case with the newer functions) and an internal dump file is brought up to load the required definitions, which usually include a Protect[] somewhere in there. Try Unprotect@AbelianGroup; AbelianGroup; Attributes[AbelianGroup], for instance. – J. M.'s missing motivation Jul 01 '16 at 13:31
  • So does this count as an answer? How do you know this? – masterxilo Jul 01 '16 at 14:08
  • Somebody might write a more authoritative answer; my notes are something that turned up from spelunking experience. In the current case, the internals are associated with the context GroupTheory`PermutationGroups`​. – J. M.'s missing motivation Jul 01 '16 at 14:13

0 Answers0