Open thofma opened 1 year ago
Note that what is called elementary divisors above is unique only if one fixes an ordering of the entries of the vector, and it is not clear that simply sorting the vector yields the best result; sometimes ordering the nonzero entries first by the prime dividing the entry and then by size is more suitable.
@fieker says in Hecke the convention is "elementary divisors" = "list of integers $d_1\mid d_2 \mid \dots\mid d_k$, so I am happy to adopt this as our convention.
Doesn't settle the abelian invariants.
I think we are consistent throughout Oscar if we use Hecke's definition of elementary_divisors
and GAP's definition for abelian_invariants
.
We can convert between the two formats via elementary_divisors_of_vector
and abelian_invariants_of_vector
.
(I had mentioned in a commit message which is somehow not linked to this issue that the function names elementary_divisors_of_vector
and abelian_invariants_of_vector
were chosen compatibly with Hecke.elementary_divisors
and GAP.Globals.AbelianInvariants
.)
For abelian groups (or modules over any PID for that matter), there are two unique decompositions yielding a list of invariants. The names of those is not consistent in the literature.
Here is @fingolfin's summary from https://github.com/oscar-system/Oscar.jl/pull/2965#discussion_r1377270898:
Maybe we need to look also at what SageMath does and compare with textbooks.