61 views

Skip to first unread message

Oct 15, 2017, 12:25:07 PM10/15/17

to SAGE devel, sage-a...@googlegroups.com, sage-nt

Extracting information about a Galois group is more painful than it

should be. After

sage: K.<z> = CyclotomicField(5)

sage: G = K.galois_group(type='pari')

sage: G

Galois group PARI group [4, -1, 1, "C(4) = 4"] of degree 4 of the

Cyclotomic Field of order 5 and degree 4

we have

sage: type(G)

<class 'sage.rings.number_field.galois_group.GaloisGroup_v1'>

(other types are returned if other options for the galois_group()

method are chosen). There is not a lot you can do with this G except

get its order (G.order()) without going deeper:

sage: GG=G.group()

sage: type(GG)

<class 'sage.groups.pari_group.PariGroup_with_category'>

sage: GG

PARI group [4, -1, 1, "C(4) = 4"] of degree 4

This type has "forgotten" that it is a Galois group but has many more

methods; sadly most not implemented. At least one might want to

extract the 4 elements of the underlying list which are the order (4)

which in this example happens to also be the degree (4), meaning that

GG is a subgroup of S_4 (degree=4) of order 4. The second entry -1 is

the sign (-1 means odd, i.e. not a subgroup of A_4), the third is the

"T-number" which identifies this group in some classification of

transitive groups.

As far as I know the only way to get the sign and T-number is to

retrieve the underlying PARI list via GG.__pari__() (which until

recently was GG._pari_() with single underscores). I would like to

implement

GG.sign() # returns GG.__pari__()[1]

GG.t_number() # returns GG.__pari__()[2]

and perhaps more. I have been looking in the PARI/gp documentation on

Galois groups and what it says about this 4-tuple is

"The output is a 4-component vector [n,s,k,name] with the following

meaning: n is the cardinality of the group, s is its signature (s = 1

if the group is a subgroup of the alternating group A_d, s = -1

otherwise) and name is a character string containing name of the

transitive group according to the GAP 4 transitive groups library by

Alexander Hulpke.

k is more arbitrary and the choice made up to version 2.2.3 of PARI is

rather unfortunate: for d > 7, k is the numbering of the group among

all transitive subgroups of S_d, as given in "The transitive groups of

degree up to eleven", G. Butler and J. McKay, Communications in

Algebra, vol. 11, 1983, pp. 863--911 (group k is denoted T_k there).

And for d ≤ 7, it was ad hoc, so as to ensure that a given triple

would denote a unique group. Specifically, for polynomials of degree d

≤ 7, the groups are coded as follows, using standard notations (etc)"

Despite the ad hoc nature of this parameter k I still think we should

allow users to get at it more easily.

John

should be. After

sage: K.<z> = CyclotomicField(5)

sage: G = K.galois_group(type='pari')

sage: G

Galois group PARI group [4, -1, 1, "C(4) = 4"] of degree 4 of the

Cyclotomic Field of order 5 and degree 4

we have

sage: type(G)

<class 'sage.rings.number_field.galois_group.GaloisGroup_v1'>

(other types are returned if other options for the galois_group()

method are chosen). There is not a lot you can do with this G except

get its order (G.order()) without going deeper:

sage: GG=G.group()

sage: type(GG)

<class 'sage.groups.pari_group.PariGroup_with_category'>

sage: GG

PARI group [4, -1, 1, "C(4) = 4"] of degree 4

This type has "forgotten" that it is a Galois group but has many more

methods; sadly most not implemented. At least one might want to

extract the 4 elements of the underlying list which are the order (4)

which in this example happens to also be the degree (4), meaning that

GG is a subgroup of S_4 (degree=4) of order 4. The second entry -1 is

the sign (-1 means odd, i.e. not a subgroup of A_4), the third is the

"T-number" which identifies this group in some classification of

transitive groups.

As far as I know the only way to get the sign and T-number is to

retrieve the underlying PARI list via GG.__pari__() (which until

recently was GG._pari_() with single underscores). I would like to

implement

GG.sign() # returns GG.__pari__()[1]

GG.t_number() # returns GG.__pari__()[2]

and perhaps more. I have been looking in the PARI/gp documentation on

Galois groups and what it says about this 4-tuple is

"The output is a 4-component vector [n,s,k,name] with the following

meaning: n is the cardinality of the group, s is its signature (s = 1

if the group is a subgroup of the alternating group A_d, s = -1

otherwise) and name is a character string containing name of the

transitive group according to the GAP 4 transitive groups library by

Alexander Hulpke.

k is more arbitrary and the choice made up to version 2.2.3 of PARI is

rather unfortunate: for d > 7, k is the numbering of the group among

all transitive subgroups of S_d, as given in "The transitive groups of

degree up to eleven", G. Butler and J. McKay, Communications in

Algebra, vol. 11, 1983, pp. 863--911 (group k is denoted T_k there).

And for d ≤ 7, it was ad hoc, so as to ensure that a given triple

would denote a unique group. Specifically, for polynomials of degree d

≤ 7, the groups are coded as follows, using standard notations (etc)"

Despite the ad hoc nature of this parameter k I still think we should

allow users to get at it more easily.

John

Jan 4, 2018, 8:39:57 AM1/4/18

to sage-algebra

Sorry to reply almost three months later. I opened #24469 for that:

https://trac.sagemath.org/ticket/24469

Sun 2017-10-15 11:25:07 UTC-5, John Cremona:

https://trac.sagemath.org/ticket/24469

Sun 2017-10-15 11:25:07 UTC-5, John Cremona:

Reply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu