2021 GSS | First steps in Magma |
Magma Handbook |
Qt.m package | Exercises | Research problems |
Recommended reading |
The Inverse Galois Problem asks whether every finite group occurs as a Galois group over Q. This question and its variant over Q(t) have driven a lot of research, and they are very interesting from a computational perspective as well. There are a variety of methods of constructing Galois groups, and they draw techniques from algebraic geometry, p-adic numbers, the theory of finite groups, Kummer theory, braid groups, group cohomology, and elliptic and modular curves, to name a few. In these lectures I will try to give an overview of the area, and explain where we stand. We will see how the various methods actually work for specific small groups, and get a feel for how far they can be pushed and what are the obstacles to solve the problem in general.
§ Lectures
§ Magma package
§ Exercises
§ Research problems
§ Recommended reading
The package Qt.m provides basic functionality for working with families of
Galois groups over Q in Magma. A family is given by a polynomial in x with coefficients in Z[a,b,...],
and the function Family
takes such a polynomial or a string that defines it and constructs the family.
Here is an example of a 1-variable D4 family:
Attach("Qt.m"); // Attach package (if it is in the current directory)
F:=Family("x^4+a*x^3+a*x+1"); // D4 family over Q(a)
F;
D4 (1): x^4 + a*x^3 + a*x + 1 ← (1) stands for 'degree 1 in a'
The code computes the Galois group and checks that the family is regular, that is has no non-trivial
constant extensions of the ground field (and returns false if not).
Also, Family(d,j)
returns a pre-defined 1-parameter regular family (the best one I am aware of) for every
transitive subgroup G=dTj of Sd with d≤10:
Family(7,2); // a family for 7T2 = D7 acting on 7 points
D7-7t2 (1): x^7 - x^6 - a*x^5 + 2*3*x^4 + (2*a+39)*x^3 + 17*x^2 - a*x + 2
Basic invariants:
G:=Group(F); G; // Galois group
Permutation group acting on a set of cardinality 4
Order = 8 = 2^3
(1, 2)(3, 4)
(2, 4)
GroupName(G);
D4
R<a>:=Ring(F); // Underlying ring Z[a]
U<x>:=PolynomialRing(F); // Polynomial ring Z[a][x]
Polynomial(F); // Polynomial in U that defines F
x^4 + a*x^3 + a*x + 1
Subfields:
F:=Family("x^4+a*x+b"); F;
S4 (1,1): x^4 + a*x + b
Subfield(F,"A4"); // Quadratic subfield cut out by A4
x^2 + 27*a^4 - 256*b^3
H:=Sylow(Group(F),2); // H = D4 < S4 of index 3
Subfield(F,H); // Cubic subfield cut out by H
x^3 - 16*b*x - 8*a^2
Changing variables, discriminant, specializations:
F<a,b>:=Family("x^6+a*x^2+b"); F; // C2*S4 family
C2*S4 (1,1): x^6 + a*x^2 + b
Discriminant(F: uptosquares);
-b
ChangeVariables(F,[a,-b^2]); // Galois group drops to S4
S4 (1,2): x^6 + a*x^2 - b^2
ChangeVariables(F,[a,b^2]); // Not regular as contains Q(i)
false
Wreath product:
C2:=Family(2,1); C2;
C2-2t1 (1): x^2 + a
C3:=Family(3,1); C3;
C3-3t1 (1): x^3 - a*x^2 - 3^2*x + a
WreathProduct(C2,C3); // C2wrC3 = C2^3:C3 = C2*A4
C2*A4-C2wrC3 (1): x^6 + a*x^4 - 3^2*x^2 - a
WreathProduct(C2,C2: nocheckregular);
D4-C2wrC2 (1): x^4 - a ← clearly not regular
Families for arbitrary cyclic groups and split extensions by cyclic groups (covered in the lectures):
Family("C5");
C5-cyc (10): x^5 - 2*5*(a^4-a^3+a^2-a+1)*x^3 - 5*(4*a^2-2*a-1)*(a^4-a^3+a^2-a+1)*x^2 - 5*(a+1)*
(3*a^3-6*a^2+4*a-2)*(a^4-a^3+a^2-a+1)*x - (a^4-a^3+a^2-a+1)*(4*a^6-6*a^5-5*a^4+10*a^3-10*a^2+9*a-1)
G:=SymmetricGroup(3); // Construct an S3-family that contains Q(sqrt a)
N:=Sylow(G,3); // 1 → C3 → S3 → C2 → 1 is a split extension by a cyclic group C3
Extension(Family("x^2-a"),G,N);
S3-lift (3): x^3 - 3*(a^2+a+1)*x + 2*(a-1)*(a^2+a+1)
F:=Family(4,1); F;
C4-4t1 (1): x^4 + a*x^3 - 2*3*x^2 - a*x + 1
Discriminant(F: uptosquares);
a^2 + 16
show that K(√d) is contained in a C4-extension of K.
D4:C2 (2,4): (b^2+4)^2*x^8 - (b^2+4)^2*x^6 - (b^2+4)*(a*b^2+2*a-1)*x^4 + a*(b^2+4)*x^2 + a^2
The group D4:C2 has a unique subgroup Q8 of index 2. Check that the
corresponding quadratic extension of Q(a,b) is given by
x^2 + (4*a^2*b^2 + 16*a^2 + a*b^2 + 4*a) = 0
This equation defines a surface in P3.
Using, for example, Magma's ClassifyRationalSurface
and ParametrizeProjectiveSurface
functions,
find a parametrisation P2→S. Use this to construct a family of Q8-extensions
over Q(a,b,c) whose 3 quadratic subfields are Q(√a2+b2),
Q(√a2+b2+c2) and
Q(√(a2+b2)(a2+b2+c2)).
This family was first constructed by Fujisaki.
for n:=3 to 10 do Family(n,NumberOfTransitiveGroups(n)-1); end for;
C3-3t1 (1): x^3 - a*x^2 - 3^2*x + a
A4-4t4 (2): 3*x^4 + 2^2*x^3 + 3*a^2+1
A5-5t4 (1): x^5 + 3*5^2*x^3 + a*x^2 + 3*a
A6-6t15 (1): x^6 + 3*x^5 + 3*5*x^4 + a*x^3 + 2^2*3*x - 2^2
A7-7t6 (1): x^7 - 2*x^6 + (a+9)*x^4 + a*x^3 + 2*x - 1
A8-8t49 (2): 7*x^8 + 2^3*x^7 + 7*a^2+1
A9-9t33 (1): x^9 - 2^2*3^2*x^5 + 2^2*3^2*5^2*x + a
A10-10t44 (1): x^10 + 3*x^5 + a*x - 2^2
Is there an explanation for these, and do they generalise to other n?
Do they exist for infinitely many n? Do degree 1 families exist for A4 and A8?
[Family(p,1): p in [3,5,7]];
[
C3-3t1 (1): x^3 - a*x^2 - 3^2*x + a,
C5-5t1 (4): x^5 - a^2*x^4 - 2*5*(2*a^2+5)*x^3 + 2*a^2*(2*a^2+5)*x^2 + (24*a^4+300*a^2+625)*x + a^2*(36*a^2+95),
C7-7t1 (10): x^7 + (a^3+2*a^2-a+13)*x^6 + 3*(a^2-a+2)*(a^3+a+9)*x^5 + (3*a^7-9*a^6+27*a^5-22*a^4+6*a^3+84*a^2-121*a+75)*x^4
+ (a^2-a+2)*(a^7-5*a^6+15*a^5-32*a^4+20*a^3+14*a^2-113*a-1)*x^3 + (-a^10+5*a^9-25*a^8+61*a^7-126*a^6+117*a^5-58*a^4-155*a^3+
168*a^2-80*a-44)*x^2 + (-a^10+8*a^9-30*a^8+75*a^7-102*a^6+89*a^5+34*a^4-56*a^3+113*a^2+42*a-17)*x +
a^9-7*a^8+23*a^7-42*a^6+28*a^5+19*a^4-60*a^3-2*a^2+16*a-1
]
Can one improve the upper bound or to prove a lower bound for a possible degree?
F7 (2): a*x^6*(a*x-1) + (7*a^2+13*a+7)*(x^5+x^4+x^3+x^2+x+1 + a)
that are regular and quite symmetric, suggesting that there could be a construction out there
for all (or at least infinitely many?) primes p. Is that the case? Specifically, is there
a better family for F11?
F:=Family("x^8-6*a*x^4-8*b*x^2-3*a^2": nocheckregular); F;
GL(2,3) (2,1): x^8-6*a*x^4-8*b*x^2-3*a^2
Subfield(F,SL(2,3));
x^2 + 3
What is the way to construct good regular GL2(F3)-families, or, even better,
regular GL2(Z/nZ)-families for all n?
R<x>:=PolynomialRing(Rationals());
L:=[
x^7-x^6-3*x^5+x^4+4*x^3-x^2-x+1, x^7-2*x^6-x^5+4*x^4-3*x^2-x+1,
x^7-x^6-4*x^5+x^4+4*x^3-3*x+1, x^7-x^6+2*x^5-3*x^4-4*x^3+2*x^2+3*x+1,
x^7-x^6+2*x^5+2*x^4-5*x^3+7*x^2-5*x+1, x^7-3*x^6+3*x^5+3*x^4-13*x^3+17*x^2-10*x+1,
x^7-2*x^5-4*x^4-x^3+5*x^2+5*x+1, x^7-x^6+x^5-4*x^4+4*x^3-5*x^2+2*x+1,
x^7-x^6-3*x^5-x^4+2*x^3+4*x^2+4*x+1, x^7-2*x^6+4*x^4-3*x^3-4*x^2+2*x+1
];
for f1,f2 in L do
F:=Family(Sprintf("%o+a*(%o)",f1,f2-f1));
if F cmpne false and IsIsomorphic(Group(F),PSL(2,7)) then F; end if;
end for;
PSL(2,7) (1): x^7 + (-a-1)*x^6 + 3*(a-1)*x^5 + (3*a+1)*x^4 + (-7*a+4)*x^3 + (-3*a-1)*x^2 + (3*a-1)*x + 1
PSL(2,7) (1): x^7 - x^6 + (5*a-4)*x^5 + (-5*a+1)*x^4 + 2^2*x^3 - 5*a*x^2 + (5*a-3)*x + 1
PSL(2,7) (1): x^7 - a*x^6 + (-a-2)*x^5 + (3*a-4)*x^4 + (3*a-1)*x^3 + (-a+5)*x^2 + (-a+5)*x + 1
PSL(2,7) (1): x^7 - x^6 + (-5*a+1)*x^5 + (5*a-4)*x^4 + 2^2*x^3 + 5*(a-1)*x^2 + (-5*a+2)*x + 1
PSL(2,7) (1): x^7 + (a-1)*x^6 + (a-3)*x^5 + (-3*a-1)*x^4 + (-3*a+2)*x^3 + (a+4)*x^2 + (a+4)*x + 1
PSL(2,7) (1): x^7 + (a-2)*x^6 - 3*a*x^5 + (-3*a+4)*x^4 + (7*a-3)*x^3 + (3*a-4)*x^2 + (-3*a+2)*x + 1
Such families are often the best known families for a given group as they have small coefficients,
and they give an excellent sanity check for the more theoretical constructions for how good they are.
For PSL2(F7), this can be pushed much further -
see Malle's paper, §3.1, §4.
But for other groups, for instance
GL2(F3),
it seems quite difficult to find even one family from thousands of examples.
Is there a good algorithm to detect or construct 1- (or more) parameter families
from a list of examples?