Series, their types and how they appear in the docs
I'm a bit confused about the type hierarchy of series. For example AbsPowerSeriesRing is a subtype of the abstract type SeriesRing but LaurentSeriesRing is not, even though they both are mentioned in the Power series section. In addition to that PuiseuxSeriesRing is also just a subtype of Ring and not SeriesRing while the docs state:
As well as implementing the Series Ring interface, the Puiseux series module in AbstractAlgebra.jl implements the generic algorithms described below.
The series element types are also a bit confusing. There is an abstract type AbsPowerSeriesRingElem which is a subtype of the abstract type SeriesElem but there is no abstract type AbsPowerSeriesRing. As far as I understand it, this abstract type wouldn't clash with the "generic" type AbsPowerSeriesRing as they would be defined in different modules (here module means the julia kind of module).
I think it would be helpful to reorganize this situation a bit to solve #2187.
Yeah, I have wondered about that same issue int he past myself (the supertypes of the rings vs. elements I mean).
Regarding the Laurent and Puiseux rings: I don't know whether this should follow the docs, or the code, or something else -- I'd start by grepping through our various projects to see if they use e.g. SeriesRing in a specific way that would make it problematic if e.g. PuiseuxSeriesRing was a subtype.
There is certainly some code I can think of that might become easier if we unified this (e.g. the serialization code)
Perhaps @thofma or @fieker have additional insights.
From triage: we don't KNOW of any problem related to making PuiseauxSeriesRing a subtype; are there other examples of code where this would help? It was brought up that, if it is just for serialization code, this could be accomplished with using a union type.