2021 GSS First steps
in Magma
Qt.m package Exercises Research

Inverse Galois Problem

PCMI 2021 Graduate Summer School Program - Number Theory Informed by Computation - July 26-30, 2021

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


Lecture 1.pdf [video] - Galois groups & transitive groups, Inverse Galois Problem over Q and Q(t), Brief History, Hilbert's Irreducibility Theorem
Lecture 2.pdf [video] - Noether's method, Quotient groups and Extension Problem, Witt's theorems on C4 and Q8, Cyclic groups, Split and non-split extensions
Lecture 3.pdf [video] - Split extensions by abelian groups, Examples, Semiabelian groups, SL2(F3)
Lecture 4.pdf [video] - Descent to subgroups, Rigidity

Magma package

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)


(Witt's theorem) Let K(√d)/K be a quadratic extension with char K≠2. We will show that it can be embedded in a C4-extension F/K if and only if d is a sum of two squares in K.
  1. Suppose K(√d) is contained in a C4-extension F/K, say F=K(√d)(√w) with w in K(√d) and Gal(F/K)=<σ>=C4. By considering σ(√w)/√w, show that -1 is a norm from K(√d) to K.
  2. Show that -1 is a norm from K(√d) to K if and only if d is a sum of two squares in K.
  3. Suppose d is a sum of two squares in K. By considering the family 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.
An n-variable G-family F over Q(a,b,...) is said to be generic if every Galois extension L/K in characteristic 0 with Galois group G is its specialisation; that is, there are r1,...,rn in K such that L is the splitting field of F(r1,...,rn)(x) over K.
  1. Show that (x2-a)(x2-b) is a generic family for G=C2xC2.
  2. By considering the differences ±√a±√b and some simplifications, show that x4+ax2+b2 is also a generic family for G=C2xC2, this time given by an irreducible polynomial.
Let G=Dic3=C4:C3 be the dicyclic group of order 12. It is a subdirect product of C4 and S3, that is G has normal subgroups N1 and N2 with trivial intersection, and G/N1=C4, G/N2=S3. The Ni do not generate G (else it would be a direct product), but an index two subgroup. By Galois correspondence, a Dic3-extension is a compositum of a C4-extension and an S3-extension whose intersection is quadratic. Use this to construct a regular G-family over Q(a).
Write a script to list all non-semi-abelian groups of order ≤120.
Construct a regular D4-family over Q(a) in 3 different ways:
  1. As a wreath product
  2. Using that D4 is a split extension by a cyclic group
  3. Descent from S4
(One could also use elliptic curves with a 4-torsion point, as for D5 below.)
C.J.Williamson on p.166 of this paper gives a nice construction of D9 over Q(a): take an elliptic curve E with a 9-torsion point over Q, and the corresponding 9-isogeny E→E'. Then the extension of function fields Q(E)/Q(E') is cyclic of degree 9, Q(E')/Q(x) is quadratic (and regular), and one can show that Q(E)/Q(x) has Galois group D9. Use a similar approach to construct a regular family for D5 over Q(a). (You may find Magma functions T:=SubgroupScheme(E,polynomial in x) and Eprime,phi:=IsogenyFromKernel(T) useful.)
Prove a special case of Hilbert's result on An: construct a regular family over Q(a) with Galois group An for n=5 and n=6, say. (For instance, consider the family xn+ax+b and analyze its discriminant.)
The group G=C2.D8 is a subdirect product of C4 and D8 (see Question Q3). Use this to construct a regular G-family over Q(a), and from here construct a regular Q16-family over Q(a). In fact, this approach works for Q2n for all n, which is non-trivial - see Jensen-Ledet-Yui's book, p. 141, where this is stated as a research problem.
Consider the following family (obtained as a wreath product) for the group D4:C2 of order 16: 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.
Find a rigid Galois stable triple of conjugacy classes in the alternating group A5.

Research problems

Groups with no known realisations

There are many papers on the realisation of the group SL2(F5), a double cover of A5, but no explicit family over Q(a) is known. See Feit (p232, Problem 1), Mestre, Crespo and Schneps. Is it possible to construct an SL2(F5)-family over Q(a)?
The are two transitive groups on ≤23 points for which the Inverse Galois Problem is not known over Q, namely 17t7=SL2(F16).C2 and the sporadic simple group M23; see Kluners-Malle database - missing groups. Is it possible to realise them?

Degree 1 families

Hilbert's and Serre's constructions of An fields give degree 2 families over Q(a). However, for n=3,5,6,7,9,10 there are degree 1 families: 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?
This is the same question for small soluble groups: are there degree one families for C23, C2xC4 or SL2(F3), and, if not, why not?
Even for cyclic groups Cp of prime order p the best degree is unclear. I will explain in the course how to construct a family for Cp of degree p(p-1)/2-1 in a, but for p=3,5,7 this is not best possible: [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?

Torsion points on algebraic groups

The Galois group of xp-a for p prime is the Frobenius group Fp, making Fp one of the easiest Galois groups to realise over Q. However, this obvious family over Q(a) is not regular, because the splitting field contains pth roots of unity, and it appears to be surprisingly hard to construct regular Fp families of small degree. In fact, of the 651 transitive groups of degree ≤15 the worst family I have is for F11=11t4, of degree 660 in a. Nevertheless, for some p there are families such as 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?
The situation with GL2(F3) is similar. That there are numerous GL2(F3)-extensions on LMFDB with small coefficients (cf. e.g. Q8), suggesting that there are good families. Indeed, if E/Q an elliptic curve with c-invariants c4, c6, then the 3-torsion field Q(E[3]) is the splitting field of x8-6c4x4-8c6x2-3c42. As a very special case of Serre's open image theorem, this is a GL2(F3)-family over Q(c4,c6). It is great, but not regular, again because of roots of unity. By the properties of the Weil pairing, Q(E[3]) contains Q(ζ3) as a quadratic subfield cut out by SL2(F3): 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?


Stauduhar's algorithm, especially as descrbed and implemented by Fieker and Klüners is an amazingly efficient algorithm to compute Galois groups of polynomials over Q of arbitrary degree. Is it possible to adapt it so that it works for families, with provably correct results?
If G=A:H is a split extension with A abelian, every H-extension (say, over Q(a)) can be lifted to a G-extension. I will explain an explicit version of this result in the lectures for A cyclic, and it is fundamental for constructing families of soluble groups. Is it possible to implement an efficient analogue for when A is non-cyclic? One interesting example is the group G=C32.He3 =(C3xC9):C9; here A=C3xC9 and H=C9. If it can be constructed, then so can be its quotient C3.He3 of order 81, which is the only group of order 64<n<108 for which I do not know a family over Q(a).
If H<G is a subgroup, then descending a G-family to an H-family is a question of finding rational curve (or a higher-dimensional rational variety) on the hypersurface that defines the corresponding subfield. Is there a general method to find rational curves on a hypersurface?
For some Galois groups it is easy to construct families over Q(a) by interpolating examples over Q. For example, take f1, f2 from the list of the first 10 polynomials with Galois group PSL2(F7) from LMFDB and constant term 1. The degree 1 one parameter family f1+a(f2-f1) through f1 and f2 turns out to have the group PSL2(F7) over Q(a) several times: 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?

Recommended reading