Groups of automorphisms (Defined over extensions of the rationals)\251Mike May, S.J., maymk@slu.edu, Saint Louis University (When studying field theory, a standard subject is the group of automorphisms of a field. This worksheet shows how to explore field automorphisms as members of a group. In particular it lets you check relations that the group might satisfy and look at automorphisms as members of the permutaion group acing on the set of roots of a splitting polynomial. This worksheet presumes that you have worked through the worksheet on Factoring Examples and the worksheet on generating and checking automorphisms before attempting this worksheet.restart;
<Text-field layout="Heading 3" style="_cstyle294"><Font italic="false" size="12" underline="false">Preliminary work I, setting up the field</Font></Text-field>As our prime example, we let K be the splitting field of NiMsJiokJSJ4RyIiJCIiIiIiIyEiIg==. We obtain K by adjoining to Q both NiMlJm9tZWdhRw==, a primitive third root of unity and cbrt2, a cube root of 2. (If you want to change fields, you need to modify this section and re-execute the code. You may want to look at the help file for RootOf, alias, and factor.)alias(omega=RootOf(x^2 + x + 1), cbrt2=RootOf(x^3 -2)); factor(x^2 + x + 1, omega);factor(x^3 -2, {cbrt2, omega});Automorphisms can be defined by what they do to a set of generators of the field. We want to keep track of what happens to the obvious generating set, and what happens to the roots of the splitting polynomial.genvector := [omega, cbrt2]; genlength := 2; rootvector := simplify([cbrt2, omega * cbrt2, omega^2 * cbrt2]);The method we are using to define and check automorphisms uses the fact that an automorphism is defined by its action on the vector of generators of the field. Following that convention, we define an automorphism by giving the vector of images of the generators. For our basic example, we now define our two obvious automorphisms, NiMlJmFscGhhRw==, which fixes the cube root of 2 and takes NiMlJm9tZWdhRw== to NiMqJCUmb21lZ2FHIiIj, and NiMlJWJldGFH, which fixes NiMlJm9tZWdhRw== and takes the cube root of 2 to NiMlJm9tZWdhRw== times the cube root of 2.alpha := simplify([omega^2, cbrt2]); beta := simplify([omega, omega * cbrt2]);
<Text-field layout="Heading 3" style="_cstyle293"><Font italic="false" underline="false">Preliminary work II, Defining composition of automorphisms</Font></Text-field>We now need a procedure for applying an automorphism to a vector. compose := proc(images, arguments) local substitutions, i, j, temp; if 2 < nargs then temp := args[nargs]; for j from 2 to nargs do temp := compose(args[nargs - j + 1], temp); od; else substitutions := {}; for i from 1 to genlength do substitutions := substitutions union {genvector[i] = images[i]}; od; simplify(subs(substitutions, arguments));fi; end:This procedure actually lets us apply a series of automorphisms to a vector.compose(alpha, rootvector); compose(beta, beta, rootvector);It will be useful to also define a function that lets us take the power of an automorphismpower := proc(images, expon) local i, j, temp; if expon < 0 then print(`error, exponent must be a nonnegative integer`); elif expon = 0 then temp := genvector; elif expon = 1 then temp := images; elif expon = 2 then temp := compose(images, images); else temp := compose(images, images); for i from 3 to expon do temp := compose(images, temp); od; fi; end:
<Text-field layout="Heading 3" style="_cstyle295"><Font italic="false" size="12" underline="false">Checking the order of an automorphism</Font></Text-field>As we start looking at automorphisms as elements of a group, the first task is to look at the order of an automorphism.We start with the automorphism NiMlJmFscGhhRw== of K = Q[NiMlJm9tZWdhRw==, cbrt2] over Q. Recall that NiMlJmFscGhhRw== takes NiMlJm9tZWdhRw== to NiMvKiQlJm9tZWdhRyIiIywkLCYiIiJGKUYlRikhIiI= and fixes cbrt2.alpha := simplify([omega^2, cbrt2]); genvector := [omega, cbrt2]; genlength := 2; rootvector := simplify([cbrt2, omega * cbrt2, omega^2 * cbrt2]);The straightforward way is find the order of NiMlJmFscGhhRw== uses the fact that the order of a group is at least as big as the order of any element in the group. There are at most 6 automorphism for this field. We can simply look at the first 6 powers of NiMlJmFscGhhRw== and visually check to see which is the first power equal to the identity. We recall that the identity fixes the generators, so it will be defined by genvector.for i from 1 to 6 do print(i, power(alpha, i)); od; Thus we see that NiMlJmFscGhhRw== has order 2. With a little work we can get maple to find the order for us.i := 0: temp := genvector: print(i, temp); for i from 1 to 6 do temp := power(alpha, i): print(i, temp); if temp = genvector then print (`The order if alpha is `||i); break fi: od:
<Text-field layout="Heading 4" style="_cstyle304"><Font bold="true" family="Times New Roman" foreground="[0,0,0]" size="10" underline="false">Exercises</Font></Text-field>1) Find the order of NiMlJWJldGFH and NiMqJiUmYWxwaGFHIiIiJSViZXRhR0Yl.2) Let L be the splitting field of NiMsJiokJSJ4RyIiJiIiIiIiJCEiIg==. L can be defined by adjoining NiMmJSV6ZXRhRzYjIiIm, a primitive fifthe root of unity, and fifthrt3, a fifth root of 3, to Q. Define a nontrivial automorphism on L over Q. Use modifications of the code about to find the order of your automorphism.
<Text-field layout="Heading 3" style="_cstyle318"><Font italic="false" size="12" underline="false">Exploring the galois group</Font></Text-field>Using the procedures defined above, consider the compositions.print('alpha','alpha',compose(alpha, alpha)); print('beta','beta',compose(beta, beta)); print('beta','beta', 'beta', compose(beta, compose(beta, beta))); print('beta','beta', 'beta',compose(beta, beta, beta)); print('beta','alpha',compose(beta, alpha)); print('beta', 'beta', 'alpha',compose(beta, beta, alpha)); print('alpha','beta', 'alpha',compose(alpha, beta, alpha)); print('alpha','beta',compose(alpha, beta)); It is clear from the above results that the order of NiMlJmFscGhhRw== is 2, the order of NiMlJWJldGFH is 3, and that NiMqJiUmYWxwaGFHIiIiJSViZXRhR0Yl is the same as NiMqKCUlYmV0YUciIiJGJEYlJSZhbHBoYUdGJQ== . That is enough to let us deduce that the Galois group of Q[NiMlJm9tZWdhRw==, cbrt2] over Q is NiMmJSJERzYjIiIn = <NiQlJmFscGhhRyUlYmV0YUc= | e = NiMqJCUmYWxwaGFHIiIj = NiMqJCUlYmV0YUciIiQ= , NiMvKiYlJmFscGhhRyIiIiUlYmV0YUdGJiomRiciIiNGJUYm>.
<Text-field layout="Heading 4" style="_cstyle317"><Font bold="true" family="Times New Roman" foreground="[0,0,0]" size="10" underline="false">Exercise:</Font></Text-field>3) Change the field above to, L = Q[NiMmJSV6ZXRhRzYjIiIm fifthrt3], the splitting field of x^5 -3. Let NiMlJmFscGhhRw== be the automorphism the sends NiMmJSV6ZXRhRzYjIiIm to NiMqJCYlJXpldGFHNiMiIiYiIiM= and fixes fifthrt3. Let NiMlJWJldGFH be the automorphism that fixes NiMmJSV6ZXRhRzYjIiIm and sends fifthrt3 to NiMmJSV6ZXRhRzYjIiImfifthrt3. Find the a set of relations satisfied by NiMlJmFscGhhRw== and NiMlJWJldGFH that let you define the galois group in terms of those relations. (You will be done if you find the orders of alpha and beta and a rule to commute alpha with beta. Remember to reset the field when you are done.)
<Text-field layout="Heading 3" style="_cstyle319"><Font italic="false" underline="false">Automorphisms as permutations of roots</Font></Text-field>If we are to look at the group of automorphisms of a field, we may want to represent them as permutations acing on the vector of roots of a splitting polynomial. For our example we recall the splitting polynomial x^3 -2, and its vector of roots. factor(x^3 -2, {cbrt2, omega}); genvector := [omega, cbrt2]; genlength := 2; rootvector := simplify([cbrt2, omega * cbrt2, omega^2 * cbrt2]); rootlength := 3;We also recall our generating automorphisms alpha := simplify([omega^2, cbrt2]); beta := simplify([omega, omega * cbrt2]);Finally we produce a procedure to convert an automorphism into a group permutaion. The procedure assumes that rootvector, rootlength, and compose from above are all defined.makeperm := proc(auto, rootvector) local temp, destin, i, j, rtlength; temp := expand(compose(auto, rootvector)); rtlength := linalg[vectdim](rootvector); destin := array(1 .. rtlength); for i from 1 to rtlength do for j from 1 to rtlength do if temp[i] = expand(rootvector[j]) then destin[i] := j; break; fi; od; if j = rtlength + 1 then print(`Error, The automorphism did not permute the given roots`); print(rootvector[i], ` was sent to `, temp[i]); break; fi; od; convert(destin, list); end:permrepa := makeperm(alpha, rootvector); permrepb := makeperm(beta, rootvector); Notice that if we try a nonisomophism, the procedure will give an error message because we are not permuting the roots. Consider the potential map that sends NiMlJm9tZWdhRw== to NiMsJiUmb21lZ2FHIiIiRiVGJQ== and fixes cbrt2. This map is not a homomorphism.makeperm([omega + 1, cbrt2], rootvector);We can convert from permlist notation to disjoint cycle notation, and use Maple's group package to look at the group more closely.with(group): cyclerepa := convert(permrepa, 'disjcyc'); cyclerepb := convert(permrepb, 'disjcyc'); GalGrp := permgroup(5, {cyclerepa, cyclerepb}); grouporder(GalGrp);
<Text-field layout="Heading 4" style="_cstyle330"><Font bold="true" family="Times New Roman" foreground="[0,0,0]" size="10" underline="false">Exercise:</Font></Text-field>4) Represent the Galois group of L, the splitting field of NiMsJiokJSJ4RyIiJiIiIiIiJCEiIg== over Q as a group of permutations on the roots of NiMsJiokJSJ4RyIiJiIiIiIiJCEiIg==.