nathancarter/group-explorer

Some groups not marked as simple that are

Closed this issue · 11 comments

In the page for the group of order two you can see in the "Subgroups" area that it apparently thinks that if the trivial subgroup (or the non-proper subgroup?) is normal, then the group cannot be simple. We get things like

For this reason, $\mathbb{Z}_5$ is not a simple group

On the other hand, even though A_5 is listed correctly as being simple, it says

None of the subgroups on the list below is normal. yet again the trivial and non-proper subgroups are listed as normal.

I might be able to come up with a fix but maybe it's something really quick for you guys.

The p elements for this start at https://github.com/nathancarter/group-explorer/blob/master/html/SubgroupInfo.html#L27

So first off, maybe those should instead say "None of the subgroups (other than ...)" but that is not exactly nice wording. So I won't propose any specific wording here but leave it to wiser heads.

Thankfully, the gap code does confirm that Z_5 is simple 😄

I see why the javascript isn't doing the identification right, though. https://github.com/nathancarter/group-explorer/blob/master/js/BasicGroup.js#L118 says

         this._isSimple =
            this.subgroups.length > 2 &&
            !this.subgroups.some(
               (el, inx) => this.isNormal(el) && inx != 0 && inx != (this.subgroups.length - 1) );

but shouldn't it be rather that `this.subgroups.length <=2 || (the rest)``. I'll propose this in a PR but if it's wrong you can ignore it.

See #13 though I'm not sure if js logic operators work that way. Should be easy enough to test, anyway.

OK this is a complicated one. Thanks for all the legwork!! Eventually I became convinced that you're right on almost all counts. But let's talk it out to see if I've understood or not.

I don't have any Tomes of Reference here with me in my home office, but I checked the definition of simple group on MathWorld and WikiPedia, and experimented in GAP. Here's what I get:

  1. All agree that cyclic groups of prime order are simple. So you are correct that the code you quote above is wrong, since it judge all cyclic as non-simple.
  2. MathWorld doesn't make an exception for the trivial group, but both WikiPedia and GAP do. They say it's not simple.
  3. But MathWorld quotes the classification theorem, which implies that the trivial group is non-simple, so they seem to agree also, even though they weren't as careful with their definition.
  4. All of this agrees with the definition in the "group terms" page on our website. (Though that has another mistake I'll come to below.)

So I think the first thing that we need to do is update your PR to instead say "order is >1 and ( order == 2 or ( the rest ) )." Does that sound right to you? If so, would you mind updating your PR to this effect? (You're correct about how && and || work, by the way--the same in maybe even every programming language I know of that uses those symbols.)

The second thing we need to fix: You're also right about the wording on the subgroups page. I think the only thing to do is change it to "At least one of the proper, nontrivial subgroups on the list below..." and similarly for the other option. Although it's uglier, it's correct. :) Do you want to do that in the same PR, since they're related?

The final thing we need to do is fix a mistake on the group terms page. it says that the smallest simple group is A5, when it really means that the smallest nonabelian simple group is A5. I can do this one separately; I'll do it right now.

Correction: The definition of simple wasn't right in our group terms page, either, and needed fixing. That's been done.

Dummit and Foote, Herstein, and Lang all say the trivial group isn't simple, so you can go with that. I like Herstein, who motivates this by saying "it has no nontrivial homomorphic images".

Your wording change seems fine, so I'll try to do that (if I can remember how to use the online GH interface to add to a PR).

I think there should be a simpler (hah!) way to write the logic here. Glad I wasn't wrong about the operator - isn't there sometimes a difference between | and ||, as well?

Okay, #13 should be updated, I believe.

One more question: I find it really annoying that it says, "the table below" when the table is below a lot of other stuff. I couldn't think of a way to say "the table below this other stuff, but not at the bottom of the page, just the bottom of the subgroups item".

Maybe you need tabs instead of clickable items :-) but that kind of redesign is above my pay grade with this project. Hope this all helps! I really want it to be something my students can use later, and thanks so much to whoever made it pure browser javascript. And you use the Sage cell server for the GAP! Great use of web technologies.

Most of thanks goes to @rayellis4 -- he's done like 90% of the coding on GE3! (Actually, there's probably a git metric somewhere to compute the exact percent, under some metric.)

The difference between | and || is relevant only for non-booleans: x||y is the boolean-or you expect, which treats each argument as a boolean no matter what it is (so, like, 5||0 is treated as true||false and gives true). But x|y is rarely what you expect if the inputs aren't boolean; it's boolean-or applied bitwise to the binary representation of the things as integers, so 5|0==5 but 5|7==7. Useful for small finite sets represented as bit sequences. This holds for most languages that have these operators; they originated in C and everything imitates C.

I'm marking this closed as per your PR. Thank you!

@rayellis4 -- With the several recent changes (including one in docs), should I do a re-build? You're more up-to-date on the release process than I am, so let me know the right thing to do. Thanks again, guys.