-
Notifications
You must be signed in to change notification settings - Fork 5
Description
The function SelectSmallGroups is the underlying engine driving AllSmallGroups and IdsOfAllSmallGroups. This can for example be used to get all groups of a certain order which are not solvable.
For many orders, there are efficient implementations. But for many others (e.g. order 1920, many of the large cube free orders), there are not. These then fallback to a generic routine, which ends up creating all groups of a given order. This is very inefficient.
For example, there are 241004 groups of order 1920, but only 588 of these are non-solvable -- namely exactly the last 588. (In fact, for most of the "non-legacy" orders, the authors of the small groups library took care to first list the nilpotent groups, then the other solvable ones, and finally the non-solvable ones). Based on this knowledge,
AllSmallGroups(1920, IsSolvableGroup, false); could terminate in a few milliseconds, but instead it takes ages (I didn't bother to let the computation finish, so I don't know how long exactly).
It would be highly desirable to improve this. For order 1920 (which is a special case in the small groups library anyway), that would be fairly easy. It's somewhat more work for the cubefree groups, I guess.