oscar-system / Oscar.jl

A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.
https://www.oscar-system.org
Other
338 stars 120 forks source link

Names for invariants of abelian groups (abelian invariants vs elementary divisors vs invariant factors) #2968

Open thofma opened 10 months ago

thofma commented 10 months ago

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:

And this function converts between the two different conventions for what "abelian invariants" are:

  1. elementary divisors, so prime powers or zero -- this is what GAP uses to represent the "abelian invariants" of a group
  2. invariant factors -- a list of integers $d_1 \mid d_2 \mid \dots \mid d_k$

I linked to Wikipedia here, but e.g. Encyclopedia of Mathematics agrees as does Bourbaki. Wikipedia also cites Lang's "Algebra" in support, but he actually only states an "Elementary Divisors Theorem", but does not say what an "elementary divisor" is -- and his theorem produces what above is called "invariant factors"

But not every does, e.g. Hecke has elementary_divisors return what I call "invariant factors", and I just read a paper by Frank Lübeck where he also used this convention.

So as usual, Math is inconsistent as hell... sigh

Anyway, back to this function: it seems to convert from format 2 to format 1 above, a comment should say this.

We now have multiple choices: use format 1 or format 2; and call the result by one or by the other name... Whatever we do, we should make explicit what we mean, given that the terms alone are ambiguous.

Anyway, I am fine with sticking to either naming convention; and also , as long as we make it clear in the documentation which we use (offering a helper function to convert between them of course also would be nice) As far as I can tell, Magma has two functions, PrimaryAbelianInvariants and AbelianInvariants which return the first resp. the second kind of sequence.

Maybe we need to look also at what SageMath does and compare with textbooks.

ThomasBreuer commented 10 months 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.

fingolfin commented 10 months ago

@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.

ThomasBreuer commented 10 months ago

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.)