gap
                                
                                
                                
                                    gap copied to clipboard
                            
                            
                            
                        unsystematic naming for operations computing certain quotients
Motivated by a comment in the discussion of pull/4910, I have looked at the names of functions that compute quotients of a group:
GQuotientsreturns a list of homomorphisms,MaximalAbelianQuotientreturns a homomorphism,NilpotentQuotient(from the lpres and nq packages) returns a group,Pq(from the anupq package) returns a group,PQuotientreturns a dedicated object from which one can compute an epimorphism,SolvableQuotientreturns a record from which one can construct the factor group or an epimorphism to it.
For the cases where not the epimorphism in question is returned, there are additional functions:
EpimorphismNilpotentQuotientcorresponds toNilpotentQuotient,EpimorphismQuotientSystemcan be applied to the output ofPQuotient,EpimorphismSolvableQuotientcorresponds toSolvableQuotient,PqEpimorphismcorresponds toPq.
The naming is not systematic, thus it is not easy to guess the names. Perhaps it would be useful to have the names EpimorphismMaximalAbelianQuotient, EpimorphismPQuotient, and EpimorphismPq, then searching for names with prefix Epimorphism would help.
Are there more available quotients which should fit to such a pattern?
What would be a corresponding name for GQuotients, perhaps Epimorphisms or EpimorphismsClassReps?
There is also EpimorphismSchurCover which should perhaps better be called EpimorphismFromSchurCover, analogous to EpimorphismFromFreeGroup and EpimorphismFromFpGroup.
Good points. EpimorphismPQuotient would be a new name for EpimorphismQuotientSystem?
BTW of course the names PQuotient vs. Pq also cause confusion. Not sure what to do about that.
@fingolfin No, I thought that EpimorphismPQuotient should take the same arguments as PQuotient but return the epimorphism that is constructed by EpimorphismQuotientSystem.
Concerning PQuotient vs. Pq, already cross-references in the documentation (GAP Reference Manual and ANUPQ manual, respectively) would be useful.
(And the header of the existing section "Quotient Methods" in the GAP Reference Manual can be extended such that the available kinds of quotients and the corresponding function variants are listed.)
Some is a relic from integrating code from several sources and a hope (in EpimorphismQuotientSystem) that the general approach of this code could be generalized to other quotient algorithm situations.
GQuotients is called this way, as it was a name I gave to the algorithm. It is a bit different in spirit to PQ or NQ, and could be considered a variant of Low index.
Having said this, I would not mind if anyone wants to give consistent alternate names, but I think (there is a significant amount of code that uses eat least one of the inconsistent names) we should not obsolecify them
@ahulpke I think that the current names can be kept without problems, since they are not wrong or misleading. My idea is that once we have a consistent list of names for the various quotient constructions, the documentation should explain these names, and the old names will be mentioned only in order to make it possible to find them.
In the context of quotient methods, the objects of interest are the epimorphisms, their kernels, and their images (the factor groups); the epimorphisms give the full information, thus one could regard functions returning their kernels or their images just as convenience functions.
Concerning LowIndexSubgroups, I think the situation is different from "obvious" quotient methods (including GQuotients) because the result is a list of subgroups, and quotients arise when one computes the permutation actions on the cosets of these subgroups. If one wants to regard LowIndexSubgroups as related to quotient methods then also any Action or ActionHomomorphism fits there.