Ch16-GaloisPolys2.mws

A Second Look at Galois Groups: Probabalistic Methods

İMike May, S.J., maymk@slu.edu, Saint Louis University

>    restart;

In "Abstract Algebra" by Dummit and Foote), it is mentioned that "if one could compute forever one could at least be sure of the precise distribution of cycle types among the elements of the Galois group."   The idea is that the cycle types we get by factoring the polynomial mod various primes shows up with a proportion that, in the limit, matches the proportion of the cycle type in the Galois group.  We can't compute forever, but we can use Maple to check lots of primes and report the results.

As part of the set-up we want to use the Galois command.  This loads a number of other commands in that we will be interested in.

>    with(group):
galois(x^2+x+1);

For a given polynomial there is some preliminary information to gather.  The information includes the degree of the polynomial and the possible partitions associated with that degree.

>    f := x^7 + 3*x + 3;
deg := degree(f,x);
d:=discrim(f,x);
ifactor(d);
NumParts := `galois/encode`(`galois/initpart`(deg), deg)+1;
for i from 1 to NumParts do
print(i,combinat[decodepart](deg,i));
od;

f := x^7+3*x+3

deg := 7

d := -702399519

-``(3)^6*``(31)*``(31081)

NumParts := 15

1, [1, 1, 1, 1, 1, 1, 1]

2, [1, 1, 1, 1, 1, 2]

3, [1, 1, 1, 2, 2]

4, [1, 2, 2, 2]

5, [1, 1, 1, 1, 3]

6, [1, 1, 2, 3]

7, [2, 2, 3]

8, [1, 3, 3]

9, [1, 1, 1, 4]

10, [1, 2, 4]

11, [3, 4]

12, [1, 1, 5]

13, [2, 5]

14, [1, 6]

15, [7]

Recall that if a prime p divides the discriminant, then our polynomial has repeated roots over the field Z[p] .  Thus we want the discriminant in factored form.  The variable top tells us the number of cycle types for the given degree.

When the degree is less than or equal to 9, we can get a list of the transitive subgroups of S[n]  along with the cycle types involved in those groups by pulling information from the groups table of the galois command.

>    Possible := {}:
grps:=`galois/groups`:
p0 := nops(grps[deg,0]):
for i from 1 to p0 do
   tempname := `galois/groups`[deg,0][i][1];
   Possible := Possible union {[tempname,
      group[transgroup](tempname, names) ,grps[deg,0][i][4]]}:
  od:
p1 := nops(grps[deg,1]):
for i from 1 to p1 do
   tempname := `galois/groups`[deg,1][i][1];
   Possible := Possible union {[tempname,
      group[transgroup](tempname, names) ,grps[deg,1][i][4]]}:
  od:
for i from 1 to nops(Possible) do
print(Possible[i]);
od;

[

[

[

[

[

[

[

We are now ready to look at the cycle types for a given polynomial factored over lots of primes.  The loop in the code below is set up to print out the cases when the prime divide the discriminant or when our polynomial factors to produce a cylye type we have not seen with a smaller prime.  A summary of the distribution of cycle types is given every 100 primes.

>    f := x^7 + 3*x + 3;
deg := degree(f,x);
d:=discrim(f,x);
ifactor(d);
top := `galois/encode`(`galois/initpart`(deg), deg)+1;
i:='i':
dist :=linalg[vector](top,0):
for j from 0 to 9 do
for i from 1 to 100 do
     p := ithprime(i+100*j):
     if modp(d,p) = 0 then
        print(p, ` divides the discrininant `, d);
     else
        shape := `galois/cyclepattern`(f, x, p):
        e := `galois/encode`(`galois/initpart`(deg), shape)+1:
        dist[e] := dist[e] + 1:
        if dist[e] = 1 then
             print(p,[shape], Factor(f) mod p);
         fi:
      fi:
od:
print(`The distribution of cycletypes at n = `,100*(j+1),` is `, dist);
od:
for i from 1 to top do
print(i, dist[i],combinat[decodepart](deg,i));
od;

f := x^7+3*x+3

deg := 7

d := -702399519

-``(3)^6*``(31)*``(31081)

top := 15

2, [7], x^7+x+1

3, ` divides the discrininant `, -702399519

7, [3, 3, 1], (x^3+4*x^2+3*x+4)*(x+6)*(x^3+4*x^2+3*x+1)

13, [5, 1, 1], (x^5+x^4+8*x^3+2*x^2+6*x+7)*(x+4)*(x+8)

17, [4, 2, 1], (x+3)*(x^4+11*x^3+5*x^2+5*x+7)*(x^2+3*x+5)

19, [3, 2, 2], (x^3+11*x^2+4*x+1)*(x^2+12*x+2)*(x^2+15*x+11)

23, [3, 2, 1, 1], (x^2+x+12)*(x+7)*(x^3+19*x^2+6*x+8)*(x+19)

29, [6, 1], (x+20)*(x^6+9*x^5+23*x^4+4*x^3+7*x^2+5*x+19)

31, ` divides the discrininant `, -702399519

103, [5, 2], (x^5+99*x^4+55*x^3+36*x^2+44*x+95)*(x^2+4*x+64)

157, [4, 3], (x^4+78*x^3+140*x^2+20*x+115)*(x^3+79*x^2+135*x+56)

191, [4, 1, 1, 1], (x+96)*(x+162)*(x+48)*(x^4+76*x^3+187*x^2+30*x+177)

193, [2, 2, 1, 1, 1], (x^2+77*x+127)*(x+170)*(x+145)*(x+24)*(x^2+163*x+167)

353, [2, 1, 1, 1, 1, 1], (x^2+310*x+270)*(x+8)*(x+296)*(x+109)*(x+305)*(x+31)

431, [3, 1, 1, 1, 1], (x+219)*(x+366)*(x+48)*(x^3+243*x^2+191*x+131)*(x+417)

479, [2, 2, 2, 1], (x^2+360*x+347)*(x+65)*(x^2+105*x+243)*(x^2+428*x+88)

`The distribution of cycletypes at n = `, 100, ` is `, vector([0, 1, 3, 1, 1, 8, 3, 4, 4, 13, 7, 11, 9, 15, 18])

`The distribution of cycletypes at n = `, 200, ` is `, vector([0, 2, 4, 3, 1, 16, 7, 7, 10, 29, 12, 22, 25, 29, 31])

`The distribution of cycletypes at n = `, 300, ` is `, vector([0, 3, 5, 4, 2, 20, 12, 10, 16, 47, 23, 31, 33, 44, 48])

`The distribution of cycletypes at n = `, 400, ` is `, vector([0, 3, 7, 7, 6, 28, 20, 15, 21, 55, 27, 40, 45, 61, 63])

`The distribution of cycletypes at n = `, 500, ` is `, vector([0, 3, 12, 9, 7, 35, 28, 22, 27, 69, 37, 48, 48, 77, 76])

`The distribution of cycletypes at n = `, 600, ` is `, vector([0, 3, 13, 10, 8, 46, 31, 29, 33, 84, 42, 59, 58, 97, 85])

`The distribution of cycletypes at n = `, 700, ` is `, vector([0, 4, 16, 10, 8, 57, 33, 37, 39, 100, 45, 70, 71, 108, 100])

`The distribution of cycletypes at n = `, 800, ` is `, vector([0, 4, 16, 10, 9, 70, 36, 41, 42, 111, 52, 81, 86, 128, 112])

`The distribution of cycletypes at n = `, 900, ` is `, vector([0, 4, 18, 11, 12, 80, 38, 45, 47, 123, 67, 87, 92, 145, 129])

`The distribution of cycletypes at n = `, 1000, ` is `, vector([0, 4, 22, 15, 13, 87, 42, 47, 52, 133, 78, 98, 103, 163, 141])

1, 0, [1, 1, 1, 1, 1, 1, 1]

2, 4, [1, 1, 1, 1, 1, 2]

3, 22, [1, 1, 1, 2, 2]

4, 15, [1, 2, 2, 2]

5, 13, [1, 1, 1, 1, 3]

6, 87, [1, 1, 2, 3]

7, 42, [2, 2, 3]

8, 47, [1, 3, 3]

9, 52, [1, 1, 1, 4]

10, 133, [1, 2, 4]

11, 78, [3, 4]

12, 98, [1, 1, 5]

13, 103, [2, 5]

14, 163, [1, 6]

15, 141, [7]

Notice that the distribution at 500 primes follows very closely with the distribution at 1000 primes.  It is pretty clear from this distribution that the group is S(7).  (Recall that the information in the group table does not include the trivial partition that is first on our list.

Exercises:

1)  List the partitions of 7 and the information on cycle structure on the transitive subgroups of S[7] .

2)  Use the techniques of this worksheet to identify the Galois groups of three irreducible polynomials of degree 7.

There are a number of drawbacks to this technique.  The first obvious drawback is that it gives a definitive answer only when the group is a symmetric group.  A second problem is the number of primes we need to test to get all the cycle types.  If we have a 9th degree polynomial whose Galois group is S[9] , we expect to find a prime over which it factors into linear factors once every 9! (about 360,000) primes.  We expect to get a transposition every 10,000 primes.  To get an answer in a more reasonable amount of time we notice that the existence of a group element of a given cycle type implies the existence of elements of the cycle types corresponding to powers of the element.  Thus we always have a group element corresponding to the trivial cycle type, and we get a transposition whenever we have an element of cycle type (7,2) or (3,3,2,1) or any other cycle type containing only odd numbers except for a single 2.  This technique then is useful to verify that a polynomial has S[n]  as its Galois group.  It should be noted that we expect most irreducible polynomials to have S[n]  as their Galois group since that is the generic case.

A second case when the technique is useful is when we are trying to verify that the Galois group is a known group of small size.  (For example, if we suspect that it is cyclic or dyhedral, testing 1000 primes gives very strong confirmation.)

 

Exercises:

3)  Find an irreducible polynomial of degree 9 with Galois group S[9] .  Justify your answer.  How many primes did you have to consider before you became confident that you were confident that you had all the cycle types?)

4)  Let f(x) be the 11th cyclotomic polynomial.  We that the corresponding Galois group is cyclic of order 10.  Find the distribution of cycle types produced by the first 1000 primes and compare to the expected distribution.

5)  We also know the Galois group of polynomials of the form x^p - q for primes p and q.  (The Galois group has order p*(p-1)/2 = p choose 2.)  Compare the expected and acual distribution of cycle types for the first 1000 primes for an 11th degree polynomial of this form.