An algorithm to determine Hopf Galois structures
Teresa Crespo1 and Marta Salguero2

arXiv:1704.00232v2 [] 25 Jul 2017

1,2

Departament de Matemàtiques i Informàtica, Universitat de Barcelona (UB),
Gran Via de les Corts Catalanes 585, E-08007 Barcelona, Spain,
e-mail: teresa.crespo@ub.edu, msalguga11@alumnes.ub.edu

July 26, 2017

Abstract
A Hopf Galois structure on a finite field extension L/K is a pair (H, µ), where
H is a finite cocommutative K-Hopf algebra and µ a Hopf action. In this paper we
present an algorithm written in the computational algebra system Magma which
gives all Hopf Galois structures on separable field extensions of a given degree
and several properties of those. We describe the results obtained for extensions
of degree up to 11. Besides, we prove that separable extensions of degree p2 , for
p an odd prime, have at most one type of Hopf Galois structures.
Keywords: Galois theory, Hopf algebra, computational system Magma.

1

Introduction

A Hopf Galois structure on a ﬁnite extension of ﬁelds L/K is a pair (H, µ), where H is
a ﬁnite cocommutative K-Hopf algebra and µ is a Hopf action of H on L, i.e a K-linear
map µ : H → EndK (L) giving L a left H-module algebra structure and inducing a Kvector space isomorphism L ⊗K H → EndK (L). Hopf Galois structures were introduced
by Chase and Sweedler in [2]. For separable ﬁeld extensions, Greither and Pareigis [10]
give the following group-theoretic equivalent condition to the existence of a Hopf Galois
structure.
e its Galois closure,
Theorem 1. Let L/K be a separable field extension of degree g, L
e
e
G = Gal(L/K),
G′ = Gal(L/L).
Then there is a bijective correspondence between the set
of Hopf Galois structures on L/K and the set of regular subgroups N of the symmetric
group Sg normalized by λ(G), where λ : G ֒→ Sg is the monomorphism given by the
action of G on the left cosets G/G′ .
For a given Hopf Galois structure on a separable ﬁeld extension L/K of degree g,
we will refer to the isomorphism class of the corresponding group N as the type of the
Hopf Galois structure. The Hopf algebra H corresponding to a regular subgroup N of
e G of the group algebra L[N]
e
Sg normalized by λ(G) is the Hopf subalgebra L[N]
ﬁxed
e by K-automorphisms and on N by conjugation
under the action of G, where G acts on L
2010 MSC: 12F10, 16T05, 33F10, 20B05
Both authors acknowledge support by grant MTM2015-66716-P (MINECO/FEDER, UE).

1

through λ. The Hopf action is induced by n 7→ n−1 (1), for n ∈ N, where we identify
Sg with the group of permutations of G/G′ and 1 denotes the class of 1G in G/G′. It
e G are in 1-to-1 correspondence with the
is known that the Hopf subalgebras of L[N]
subgroups of N stable under the action of G (see e.g. [8] Proposition 2.2) and that,
e 1 ]G
given two regular subgroups N1 , N2 of Sg normalized by λ(G), the Hopf algebras L[N
e 2 ]G are isomorphic if and only if the groups N1 and N2 are G-isomorphic.
and L[N
Childs [3] gives an equivalent condition to the existence of a Hopf Galois structure
introducing the holomorph of the regular subgroup N of Sg . We state the more precise
formulation of this result due to Byott [1] (see also [4] Theorem 7.3).
Theorem 2. Let G be a finite group, G′ ⊂ G a subgroup and λ : G → Sym(G/G′ ) the
morphism given by the action of G on the left cosets G/G′ . Let N be a group of order
[G : G′ ] with identity element eN . Then there is a bijection between
N = {α : N ֒→ Sym(G/G′ ) such that α(N) is regular}
and
G = {β : G ֒→ Sym(N) such that β(G′ ) is the stabilizer of eN }
Under this bijection, if α ∈ N corresponds to β ∈ G, then α(N) is normalized by λ(G)
if and only if β(G) is contained in the holomorph Hol(N) of N.
In Hopf Galois theory one has the following Galois correspondence theorem.
Theorem 3 ([2] Theorem 7.6). Let (H, µ) be a Hopf Galois structure on the field extension L/K. For a K-sub-Hopf algebra H ′ of H we define
′

LH = {x ∈ L | µ(h)(x) = ε(h) · x for all h ∈ H ′ },
′

where ε is the counity of H. Then, LH is a subfield of L, containing K, and
FH : {H ′ ⊆ H sub-Hopf algebra} −→ {Fields E | K ⊆ E ⊆ L}
H′

→

LH

′

is injective and inclusion reversing.
In [10] a class of Hopf Galois structures is identiﬁed for which the Galois correspondence is bijective. We shall say that a Hopf Galois structure (H, µ) on L/K is an almost
classically Galois structure if the corresponding regular subgroup N of Sg normalized
by λ(G) satisﬁes that its centralizer ZSg (N) in Sg is contained in λ(G).
Theorem 4 ([10] 5.2). If (H, µ) is an almost classically Galois Hopf Galois structure
on L/K, then the map FH from the set of K-sub-Hopf algebras of H into the set of
subfields of L containing K is bijective.
In [7] the Hopf Galois character of separable ﬁeld extensions of degree up to 7 and
of some subextensions of its normal closure has been determined. In [8] Theorem 3.4,
a family of extensions is given with no almost classically Galois structure but with a
Hopf Galois structure for which the Galois correspondence is bijective. In [9] a degree 8
non-normal separable extension having two non-isomorphic Hopf Galois structures with
isomorphic underlying Hopf algebras is presented.
In this paper we present an algorithm which determines all Hopf Galois structures
of a separable ﬁeld extension of a given degree g and their corresponding type. Moreover our algorithm distinguishes almost classically Galois structures and decides for the
2

remaining ones if the Galois correspondence is bijective. Finally it classiﬁes the Hopf
Galois structures in Hopf algebra isomorphism classes. We detail the results obtained
for separable ﬁeld extensions of composite degree up to 11. In the case of prime degree,
we obtain the results already found in [3] theorem 2 and [12] theorem 5.2, namely that
e its Galois closure, then L/K
if L/K is a separable ﬁeld extension of prime degree and L
e
has a Hopf Galois structure if and only if Gal(L/K)
is solvable and, in this case, the
Hopf Galois structure is unique. We note that the case of degree 8 is especially interesting since there are 5 groups of order 8, up to isomorphism. In the case of degree p2 ,
for p an odd prime, we prove that a separable ﬁeld extension of degree p2 has at most
one type of Hopf Galois structures.

2

Extensions of degree p2, for p an odd prime

For p prime, there are exactly two groups of order p2 , up to isomorphism, the cyclic
one Cp2 and the direct product of two copies of Cp , hence two possible types for a Hopf
Galois structure of a ﬁeld extension of degree p2 . We shall prove that the two types
do not occur simultaneously, when p 6= 2. The case p = 2 goes diﬀerently, see table 1.
For p = 3, we give in table 7 the results obtained by our algorithm. If we write Cp2
additively as Z/p2 Z, its holomorph is Z/p2 Z⋊(Z/p2 Z)∗ . For Cp ×Cp the automorphism
group is isomorphic to GL(2, Fp ).
Proposition 5. Let L/K be a separable field extension of degree p2 , p an odd prime,
e
e
L/K
its normal closure and G ≃ Gal(L/K).
If L/K has a Hopf Galois structure of
cyclic type, then it has no structure of type Cp ×Cp . Therefore a separable field extension
of degree p2 , p an odd prime, has at most one type of Hopf Galois structures either cyclic
or Cp × Cp .
Proof. By theorem 2, if L/K has a Hopf Galois structure of type Cp2 , then G is a
transitive subgroup of Hol(Cp2 ). We shall see that all transitive subgroups of Hol(Cp2 )
contain an element of order p2 . Let us write Hol(Cp2 ) as Z/p2 Z ⋊ (Z/p2 Z)∗ and let σ
be a generator of (Z/p2 Z)∗ . The immersion of Hol(Cp2 ) in the symmetric group Sp2 is
given by sending the generator 1 of Z/p2 Z to the p2 -cycle (1, 2, . . . , p2 ) and σ to itself,
considered as a permutation. The stabilizer of 1 in the image H of Hol(Cp2 ) in Sp2
consists in the elements (1 − k j , σ j ), where k = σ(1) and 1 − k j is computed modulo p2 .
We have |H| = |Hol(Cp2 )| = p3 (p − 1), hence H has a unique p-Sylow subgroup Syl(H)
which is isomorphic to the only non-abelian group of order p3 having an element of order
p2 (see [6]). Now, a subgroup H ′ of H is transitive if and only if [H ′ : StabH (1)∩H ′] = p2 .
Let H ′ be a transitive subgroup of H. We have then p2 | |H ′ | and |H ′| | p3 (p − 1), hence
H ′ has a unique p-Sylow subgroup Syl(H ′) which has order p3 or p2 . In the ﬁrst case,
Syl(H ′) = Syl(H) contains an element of order p2 . In the second case, Syl(H ′) is a
subgroup of Syl(H) of order p2 . The group Syl(H) is isomorphic to the group
(
!
)
1 + pm b
2
Gp :=
: m, b ∈ Z/p Z ,
0
1
where m actually only matters modulo p. The group Gp has p3 − p2 elements of order
p2 , those with b 6≡ 0 (mod p), hence p cyclic subgroups of order p2 and p2 − 1 elements
of order p, those nontrivial with b ≡ 0 (mod p), hence one noncyclic subgroup of order
p2 . Then H ′ contains an element of order p2 except in the case in which Syl(H) is
3

isomorphic to the noncyclic subgroup of order p2 of Gp . The corresponding subgroup
of Hol(Cp2 ) is generated by (p, Id) and (0, σ p−1 ). Its intersection with StabH (1) consists
in the elements (1 − k l(p−1) , σ l(p−1) ), 1 ≤ l ≤ p, since k p−1 ≡ 1 (mod p), hence this
intersection has order p. We have then that if Syl(H) is isomorphic to the noncyclic
subgroup of order p2 of Gp , then p divides exactly [H ′ : StabH (1) ∩ H ′] and H ′ is not
transitive. We have proved then that all transitive subgroups of Hol(Cp2 ) contain an
element of order p2 .
Let us look now at Hol(Cp × Cp ). By [11], Theorem 4.4, Hol(Cp × Cp ) has no
elements of order p2 . Taking into account what we have proved above, this ﬁnishes the
proof of the proposition. ✷
Remark 6. Kohl proves in [11] that any Hopf Galois structure on a cyclic extension of
order pn , for p an odd prime, is of cyclic type. Childs studies in [5] these Hopf Galois
structures in the case of cyclic extensions of order p2 .

3

Description of the algorithm

e its Galois closure, G = Gal(L/K),
e
Given a separable ﬁeld extension L/K of degree g, L
e
G′ = Gal(L/L),
the action of G on the left cosets G/G′ is transitive, hence the morphism
λ : G → Sg identiﬁes G with a transitive subgroup of Sg , which is determined up to
conjugation. Moreover, if we enumerate the left cosets G/G′ starting with the one
containing 1G , λ(G′ ) is equal to the stabilizer of 1 in G. Therefore considering all
separable ﬁeld extensions L/K of degree g is equivalent to considering all transitive
groups G of degree g, up to conjugation. The algorithm structure is as follows:
Step 1 Given a transitive group G of degree g and a type of regular subgroups N of Sg ,
run over the conjugation class of N in Sg and determine whether N is normalized
by G. In the aﬃrmative case, check if N is contained in G.
Step 2 For each transitive group G of degree g and G′ = StabG (1), determine the number intf ields(G) of subgroups of G containing G′ , that is, by the fundamental
theorem of classical Galois theory, the number of intermediate ﬁelds of the extension L/K.
Step 3 For each pair (G, N) determined in Step 1, determine the number subGst(N)
of G-stable subgroups of N, i.e. subgroups of N normalized by G, that is, the
cardinal of the image of the map FH in Theorem 3 for the Hopf Galois structure
given by N. Check if this number equals intf ields(G), that is if the Galois
correspondence is bijective.
Step 4 For each pair (G, N), (G, N ′ ), with N ≃ N ′ and subGst(N) = subGst(N ′ ), check
if N and N ′ are G-isomorphic, that is if the corresponding Hopf algebras are
isomorphic. To this end, we use that for a regular subgroup N of the symmetric
group Sg , the automorphism group Aut N of N is isomorphic to the stabilizer of
1 in the holomorph Hol(N) of N and that Hol(N) is the normalizer of N in Sg .
We note that in Step 1 we compute the transversal of the normalizer of N in Sg
and the conjugate of N by each element in this transversal. This computation occurs
to need a signiﬁcantly shorter execution time than the use of the Magma function Class
from degree 9 onwards. In the vector which collects the regular subgroups N of Sg
4

giving a Hopf Galois structure we have added a numbering variable. In this way, each of
these N’s is identiﬁed with an integer number. This numeration is respected all along
the program so that, once the N’s have been computed in Step 1, we can easily know
the properties of the corresponding Hopf Galois structures by searching the assigned
number. This greatly simpliﬁes the reading and interpretation of the results.

4

Results and discussion

We present the results obtained for separable ﬁeld extensions of degrees g = 4, 6, 8, 9
and 10 in the tables in appendix 1. We denote by kT i the ith transitive group of
degree k called by TransitiveGroup(k, i) in the Magma program. In tables 1 to 8, for
each transitive group G of degree g and each group N of order g, the corresponding
table gives the total number T of Hopf Galois structures of type N for a separable ﬁeld
e over K is
extension L/K of degree g such that the Galois group of the normal closure L
isomorphic to G. Moreover, it gives the number a-c of those which are almost classically
Galois, the number BC of those for which the Galois correspondence is bijective and the
number G-i of Hopf algebra isomorphism classes in which the Hopf Galois structures are
partitioned. In particular the diﬀerence BC minus a-c gives the number of non almost
classically Galois Hopf Galois structures for which the Galois correspondence is bijective.
We also give as a summary the total number of Hopf Galois structures corresponding to
G together with the above items. The transitive groups G such that the corresponding
ﬁeld extension L/K has no Hopf Galois structure are not included in the table.
We note that the ﬁeld extension with smallest degree having a non almost classically
Galois Hopf Galois structure with bijective Galois correspondence is a Galois extension
of degree 4 with Galois group C4 and the Hopf Galois structure is of type C2 × C2 . The
non-Galois extension with smallest degree having this property is a separable extension
of degree 6 whose Galois closure has group 6T 5 and the Hopf Galois structure is of
type S3 . The ﬁeld extension with smallest degree having non-isomorphic Hopf Galois
structures with isomorphic Hopf algebras is a Galois extension of degree 6 with Galois
group the symmetric group S3 for which the three Hopf Galois structures of cyclic type
C6 have underlying isomorphic Hopf algebras.
In table 6 we give the distribution of Hopf Galois structures in Hopf algebra isomorphism classes for transitive groups of degree 8 having some class with more that one element. For example, in the cell corresponding to G = N = C4 ×C2 , 10 = 5×1+1×2+1×3
means that for a Galois extension with Galois group C4 × C2 there are 10 Hopf Galois
structures of type C4 × C2 which are distributed in 5 classes with 1 element, 1 class with
2 elements and 1 class with 3 elements.
Table 9 reﬂects the size of the results obtained and the computation complexity of
the algorithm. In it we give for every degree g the order of the symmetric group of
degree g; the total number of transitive groups of degree g and the number Max of
transitive groups of degree g whose order does not exceed the order of the holomorphs
of all the groups of order g; the number of possible types of Hopf Galois structures;
the total number of Hopf Galois structures and the number of the almost classically
Galois ones; the number of Hopf Galois structures with bijective Galois correspondence
and the number of those which are not almost classically Galois; the number of Hopf
algebra isomorphism classes in which the Hopf Galois structures are partitioned (which
correspond to G-isomorphism classes of the corresponding regular groups N) and the
5

number of those for Galois extensions; and ﬁnally the execution times in seconds and
the memory used in megabytes. We note that the presented program is very eﬃcient up
to degree 11. One may observe in particular that the computation for degree 8, which
gives a large number of Hopf Galois structures, takes only about 17 seconds. For degree
12, even on a supercomputer, the computation cannot be carried out due to lack of
memory.

4.1

Conclusions

The elaboration of the algorithm presented allows to determine all Hopf Galois structures
of separable ﬁeld extensions of a given degree up to degree 11. Such a determination has
been obtained by theoretic tools only for prime degree extensions. In proposition 5 we
prove a partial result concerning Hopf Galois structures of separable ﬁeld extensions of
degree p2 , for p an odd prime, which came up from the results for degree 9 extensions. In
general Hopf Galois structures may not be determined by theoretic reasoning, therefore
it is valuable to have the presented algorithm at disposal. We specially highlight the
richness of results obtained in the degree 8 case.

4.2

Example

We consider a Galois extension L/K with Galois group G = C2 × C2 × C2 . As given
in table 6, it has 42 Hopf Galois structures of type D2·4 partitioned in 7 Hopf algebra
isomorphism classes of 6 elements each. We will examine in detail one of these classes
and determine the corresponding Hopf algebra and Galois actions. We may write L =
K(α, β, γ), with α2 , β 2 , γ 2 ∈ K and G is then generated by the automorphisms a, b, c
given by
a : α 7→ −α

b : α 7→

α

c : α 7→

α
β .

β 7→

β ,

β 7→ −β ,

β 7→

γ 7→

γ

γ 7→

γ 7→ −γ

γ

The group C2 ×C2 ×C2 ≃ 8T 3 is given in Magma as the subgroup of the symmetric group
generated by (1, 8)(2, 3)(4, 5)(6, 7), (1, 3)(2, 8)(4, 6)(5, 7), (1, 5)(2, 6)(3, 7)(4, 8). If we order the elements in G as Id, ab, b, ac, c, abc, bc, a, we have λ(a) = (1, 8)(2, 3)(4, 5)(6, 7),
λ(b) = (1, 3)(2, 8)(4, 6)(5, 7), λ(c) = (1, 5)(2, 6)(3, 7)(4, 8) and we shall identify G with
its image by λ. The following regular subgroups of S8 are isomorphic to D2·4 , normalized
by G and mutually G-isomorphic.
N1 = hs1 = (1, 8)(2, 3)(4, 5)(6, 7), r1 = (1, 6, 5, 2), (3, 4, 7, 8)i,
N2 = hs2 = (1, 8)(2, 3)(4, 5)(6, 7), r2 = (1, 4, 7, 2), (3, 6, 5, 8)i,
N3 = hs3 = (1, 6)(2, 5)(3, 4)(7, 8), r3 = (1, 4, 5, 8), (2, 3, 6, 7)i,
N4 = hs4 = (1, 2)(3, 8)(4, 7)(5, 6), r4 = (1, 4, 3, 6), (2, 5, 8, 7)i,
N5 = hs5 = (1, 6)(2, 5)(3, 4)(7, 8), r5 = (1, 2, 3, 8), (4, 5, 6, 7)i,
N6 = hs6 = (1, 4)(2, 7)(3, 6)(5, 8), r6 = (1, 6, 7, 8), (2, 3, 4, 5)i.
We check that ari a = ri3 , bri b = ri , cri c = ri , asi a = si , bsi b = si , csi c = si , 1 ≤ i ≤ 6,
hence Ni is normalized by G, for 1 ≤ i ≤ 6 and si 7→ sj , ri 7→ rj deﬁnes a G-isomorphism
from Ni to Nj , 1 ≤ i, j ≤ 6.
6

By computation, we obtain that the Hopf algebra corresponding to Ni is the K-Hopf
algebra with basis 1, ri + ri3 , ri2 , α(ri − ri3 ), si , si ri + si ri3 , si ri2 , α(si ri − si ri3 ) and the Hopf
actions are given by
r1 7→ ab,

r12 7→ c,

r2 7→ ab,

r22 7→ bc, r23 7→ ac,

s2 7→ a,

r3 7→ a,

r32 7→ c,

r33 7→ ac,

s3 7→ abc, s3 r3 7→ b,

r4 7→ abc, r42 7→ b,

r43 7→ ac,

s4 7→ ab,

r53 7→ a,

s5 7→ abc, s5 r5 7→ c,

s5 r52 7→ ac,

s5 r53 7→ bc

s6 7→ ac,

s6 r62 7→ ab,

s6 r63 7→ c

r5 7→ ab,

r52 7→ b,

r13 7→ abc, s1 7→ a,

r6 7→ abc, r62 7→ bc, r63 7→ a,

s1 r1 7→ bc, s1 r12 7→ ac,
s2 r2 7→ c,

s2 r22 7→ abc, s2 r23 7→ b
s3 r32 7→ ab,

s4 r4 7→ bc, s4 r42 7→ a,
s6 r6 7→ b,

s1 r13 7→ b
s3 r33 7→ bc
s4 r43 7→ c

A diﬀerent explicit example can be found in [13], Example 5.3.1.

Acknowledgments
We are grateful to Anna Rio and Montserrat Vela for valuable discussions on the subject
of this paper and to Joan Nualart and Pawel Bogdan for their help with the Magma
program. We thank also Jordi Guàrdia for giving us access to the supercomputer of the
Universitat Politècnica de Catalunya.

References
[1] N.P. Byott, Uniqueness of Hopf Galois structure for separable field extensions.
Comm. Algebra 24 (1996), 3217-3228. Corrigendum, ibid., 3705.
[2] S.U. Chase, M. Sweedler, Hopf Algebras and Galois Theory. Lecture Notes in Mathematics, Vol. 97, Springer Verlag, 1969.
[3] L. N. Childs, On the Hopf Galois theory for separable field extensions. Comm. Algebra 17 (1989), 809-825.
[4] L. N. Childs, Taming wild extensions: Hopf algebras and local Galois module theory,
AMS 2000.
[5] L. N. Childs, Hopf Galois Structures on Degree p2 Cyclic Extensions of Local Fields,
New York J. Math. 2 (1996), 86-102.
[6] K. Conrad, Groups of order p3 , www.math.uconn.edu/∼conrad/blurbs/grouptheory/
groupsp3.pdf
[7] T. Crespo, A. Rio, M. Vela, The Hopf Galois property in subfield lattices, Comm.
Algebra 44 (2016), 336-353.
[8] T. Crespo, A. Rio, M. Vela, On the Galois correspondence theorem in separable Hopf
Galois theory, Publ. Mat. 60 (2016), 221-234.
[9] T. Crespo, A. Rio, M. Vela, Non-isomorphic Hopf Galois structures with isomorphic
underlying Hopf algebras, J. Algebra 422 (2015), 270-276.
7

[10] C. Greither, B. Pareigis, Hopf Galois theory for separable field extensions. J. Algebra
106 (1987), 239-258.
[11] T. Kohl, Classification of the Hopf Galois Structures on Prime Power Radical Extensions, J. Algebra, 207 (1998), 525-546.
[12] B. Pareigis, Forms of Hopf algebras and Galois theory in “Topics in Algebra, Part
1” (Warsaw, 1988), 75-93, Banach Center Publ., 26, Part 1, PWN, Warsaw, 1990.
[13] M. Salguero, Hopf Galois theory of separable field extensions, graduate thesis, June
2016, http://diposit.ub.edu/dspace/bitstream/2445/110365/2/memoria.pdf

8

Appendix 1 - Tables
Table 1: Degree 4 extensions
Hopf Galois structures
Type C2 × C2

Type C4

Galois

Summary

group

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

4T 1 ≃ C4

1

1

1

1

1

0

1

1

2

1

2

2

4T 2 ≃ C2 × C2

3

0

0

3

1

1

1

1

4

1

1

4

4T 3 ≃ D2·4

1

1

1

1

1

1

1

1

2

2

2

2

4T 4 ≃ A4

0

0

0

0

1

1

1

1

1

1

1

1

4T 5 ≃ S4

0

0

0

0

1

1

1

1

1

1

1

1

Table 2: Degree 6 extensions

Hopf Galois structures
Galois

Type C6 ≃ C2 × C3

group

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

6T 1 ≃ C6

1

1

1

1

2

0

1

2

3

1

2

3

6T 2 ≃ D2·3

3

0

0

1

2

1

1

2

5

1

1

3

6T 3 ≃ C6 ⋊ C2

1

1

1

1

2

1

1

2

3

2

2

3

6T 5 ≃ (C3 × C3 ) ⋊ C2

0

0

0

0

2

1

2

2

2

1

2

2

6T 9 ≃ 6T 5 ⋊ C2

0

0

0

0

2

2

2

2

2

2

2

2

9

Type D2·3 ≃ S3

Summary

Table 3: Degree 8 extensions
Hopf Galois structures
Type C4 × C2

Type C8

Galois

Type C2 × C2 × C2

Type D2·4

Type Q8

group

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

8T 1 ≃ C8

2

1

2

2

0

0

0

0

0

0

0

0

2

0

2

2

2

0

2

2

4

0

0

2

10

1

1

7

4

0

1

4

6

0

2

5

2

0

0

2

0

0

0

0

42

0

0

28

8

1

1

8

42

0

0

7

14

0

0

7

8T 4 ≃ D2·4

2

0

0

1

14

0

0

9

6

0

0

4

6

1

1

4

2

0

0

2

8T 5 ≃ Q8

6

0

0

3

6

0

6

3

2

0

2

1

6

0

6

6

2

1

2

2

8T 6

2

1

2

2

0

0

0

0

0

0

0

0

2

1

2

2

2

0

2

2

8T 7

2

2

2

2

0

0

0

0

0

0

0

0

2

0

2

2

2

0

2

2

8T 8

2

1

2

2

0

0

0

0

0

0

0

0

2

0

2

2

2

1

2

2

8T 9

0

0

0

0

10

1

1

9

4

1

1

4

6

2

2

5

2

0

0

2

8T 10

0

0

0

0

6

2

3

6

4

0

1

4

0

0

0

0

0

0

0

0

8T 11

2

0

0

1

6

2

6

5

2

0

2

2

6

1

6

6

2

1

2

2

8T 12

0

0

0

0

0

0

0

0

2

0

2

1

0

0

0

0

2

1

2

2

8T 13

0

0

0

0

0

0

0

0

2

1

1

2

0

0

0

0

2

0

0

1

8T 14

0

0

0

0

0

0

0

0

4

0

1

3

0

0

0

0

0

0

0

0

8T 15

2

2

2

2

0

0

0

0

0

0

0

0

2

1

2

2

2

1

2

2

8T 16

0

0

0

0

0

0

0

0

0

0

0

0

2

0

2

2

2

0

2

2

8T 17

0

0

0

0

0

0

0

0

0

0

0

0

2

1

2

2

2

1

2

2

8T 18

0

0

0

0

6

3

3

6

4

1

1

4

0

0

0

0

0

0

0

0

8T 2 ≃ C4 × C2
8T 3 ≃ (C2 )

3

10

Table 4: Degree 8 extensions (cont.)
Hopf Galois structures
Type C4 × C2

Type C8

Galois

Type C2 × C2 × C2

Type D2·4

Type Q8

11

group

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

8T 19

0

0

0

0

2

1

2

2

2

1

2

2

0

0

0

0

0

0

0

0

8T 20

0

0

0

0

2

0

2

2

2

0

2

2

0

0

0

0

0

0

0

0

8T 22

0

0

0

0

6

6

6

6

2

2

2

2

6

6

6

6

2

2

2

2

8T 23

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

2

1

2

2

8T 24

0

0

0

0

0

0

0

0

2

1

1

2

0

0

0

0

0

0

0

0

8T 25

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

8T 26

0

0

0

0

0

0

0

0

0

0

0

0

2

2

2

2

2

2

2

2

8T 29

0

0

0

0

2

2

2

2

2

2

2

2

0

0

0

0

0

0

0

0

8T 32

0

0

0

0

0

0

0

0

2

2

2

2

0

0

0

0

2

2

2

2

8T 33

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

8T 34

0

0

0

0

0

0

0

0

3

0

3

3

0

0

0

0

0

0

0

0

8T 36

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

8T 37

0

0

0

0

0

0

0

0

2

0

2

2

0

0

0

0

0

0

0

0

8T 39

0

0

0

0

0

0

0

0

2

2

2

2

0

0

0

0

0

0

0

0

8T 40

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

2

2

2

2

8T 41

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

8T 48

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

Table 5: Degree 8 extensions-Summary
H G structures

H G structures

12

Galois group

T

a-c

BC

G-i

Galois group

T

a-c

BC

G-i

8T 1 ≃ C8

6

1

6

6

8T 19

4

2

4

4

8T 2 ≃ C4 × C2

26

1

4

20

8T 20

4

0

4

4

8T 3 ≃ (C2 )3

106

1

1

50

8T 22

16

16

16

16

8T 4 ≃ D2·4

30

1

1

20

8T 23

2

1

2

2

8T 5 ≃ Q8

22

1

16

15

8T 24

2

1

1

2

8T 6

6

2

6

6

8T 25

1

1

1

1

8T 7

6

2

6

6

8T 26

4

4

4

4

8T 8

6

2

6

6

8T 29

4

4

4

4

8T 9

22

4

4

20

8T 32

4

4

4

4

8T 10

10

2

4

10

8T 33

1

1

1

1

8T 11

18

4

16

16

8T 34

3

0

3

3

8T 12

4

1

4

3

8T 36

1

1

1

1

8T 13

4

1

1

3

8T 37

2

0

2

2

8T 14

4

0

1

3

8T 39

2

2

2

2

8T 15

6

4

6

6

8T 40

2

2

2

2

8T 16

4

0

4

4

8T 41

1

1

1

1

8T 17

4

2

4

4

8T 48

1

1

1

1

8T 18

10

4

4

10

Table 6: Hopf algebra isomorphism classes for degree 8 extensions
Isomorphism classes

13

Galois group

Type C8

Type C4 × C2

Type C2 × C2 × C2

Type D2·4

Type Q8

8T 2 ≃ C4 × C2

4= 2×2

10 = 5 × 1 + 1 × 2 + 1 × 3

4= 4×1

6= 4×1+1×2

2= 2×1

8T 3 ≃ (C2 )3

0

42 = 21 × 1 + 7 × 3

8= 8×1

42 = 7 × 6

14 = 7 × 2

8T 4 ≃ D2·4

2= 1×2

14 = 4 × 1 + 5 × 2

6= 2×1+2×2

6= 3×1+1×3

2= 2×1

8T 5 ≃ Q8

6= 3×2

6=3×2

2= 1×2

6=6×1

2= 2×1

8T 9

0

10 = 8 × 1 + 1 × 2

4= 4×1

6= 4×1+1×2

2= 2×1

8T 11

2= 1×2

6 =4×1+1×2

2= 2×1

6=6×1

2= 2×1

8T 12

0

0

2= 1×2

0

2= 2×1

8T 13

0

0

2= 2×1

0

2= 1×2

8T 14

0

0

4= 2×1+1×2

0

0

Table 7: Degree 9 extensions
Hopf Galois structures
Type C3 × C3

Type C9

Galois

Summary

14

group

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

9T 1 ≃ C9

3

1

3

3

0

0

0

0

3

1

3

3

9T 2 ≃ C3 × C3

0

0

0

0

9

1

1

5

9

1

1

5

9T 3

1

1

1

1

0

0

0

0

1

1

1

1

9T 4

0

0

0

0

3

1

1

2

3

1

1

2

9T 5

0

0

0

0

1

1

1

1

1

1

1

1

9T 6

3

3

3

3

0

0

0

0

3

3

3

3

9T 7

0

0

0

0

3

3

3

3

3

3

3

3

9T 8

0

0

0

0

1

1

1

1

1

1

1

1

9T 9

0

0

0

0

1

1

1

1

1

1

1

1

9T 10

1

1

1

1

0

0

0

0

1

1

1

1

9T 11

0

0

0

0

1

1

1

1

1

1

1

1

9T 12

0

0

0

0

3

3

3

3

3

3

3

3

9T 13

0

0

0

0

1

1

1

1

1

1

1

1

9T 14

0

0

0

0

1

1

1

1

1

1

1

1

9T 15

0

0

0

0

1

1

1

1

1

1

1

1

9T 16

0

0

0

0

1

1

1

1

1

1

1

1

9T 18

0

0

0

0

1

1

1

1

1

1

1

1

9T 19

0

0

0

0

1

1

1

1

1

1

1

1

9T 23

0

0

0

0

1

1

1

1

1

1

1

1

9T 26

0

0

0

0

1

1

1

1

1

1

1

1

Table 8: Degree 10 extensions
Hopf Galois structures
Type C10

Galois

Type D2·5

Summary

15

group

T

a-c

BC

G-i

T

a-c

BC

G-i

T

a-c

BC

G-i

10T 1 ≃ C10

1

1

1

1

2

0

1

2

3

1

2

3

10T 2 ≃ D2·5

5

0

0

1

2

1

1

2

7

1

1

3

10T 3

1

1

1

1

2

1

1

2

3

2

2

3

10T 4

1

0

1

1

2

0

1

2

3

0

2

3

10T 5

1

1

1

1

2

1

1

2

3

2

2

3

10T 6

0

0

0

0

2

1

2

2

2

1

2

2

10T 9

0

0

0

0

2

2

2

2

2

2

2

2

10T 10

0

0

0

0

2

0

2

2

2

0

2

2

10T 17

0

0

0

0

2

2

2

2

2

2

2

2

Table 9: Computation ﬁgures
Degree

Order

Transitive Groups
Total

Types

Max

HG struct.

G-iso

BC

Execution time

Memory used

Total

a-c

Total

not a-c

Total

Galois

(s)

(MB)

16

2

2

1

1

1

1

1

1

0

1

1

≈1

≈ 10

3

6

2

2

1

2

2

2

0

2

1

≈1

≈ 10

4

24

5

5

2

10

6

7

1

10

6

≈1

≈ 11

5

120

5

3

1

3

3

3

0

3

1

≈1

≈ 11

6

720

16

10

2

15

7

9

2

13

6

≈2

≈ 11

7

5,040

7

4

1

4

4

4

0

4

1

≈1

≈ 11

8

40,320

50

48

5

348

74

147

73

262

111

≈ 17

≈ 40

9

362,880

34

26

2

38

26

28

2

33

8

≈ 10

≈ 16

10

3,628,800

45

21

2

27

11

17

6

23

6

≈ 160

≈ 45

11

39,916,800

8

4

1

4

4

4

0

4

1

≈ 90

≈ 160

Appendix 2 - Magma code
//MAIN FUNCTION
HopfGalois:=function(g)
S:=Sym(g); n:=NumberOfTransitiveGroups(g);
//We calculate triv (number of regular subgroups) and count_max
//(biggest transitive group which may have a Hopf Galois structure)
i:=g; max:=Order(S);
m:=1; ord_hol:=[]; count_max:=0;
while i le max do
count:=0;
while (m le n) and (Order(TransitiveGroup(g,m)) eq i) do
m:=m+1;
count:=count+1;
end while;
if count ne 0 then
if i eq g then
triv:=count; //triv means that L|K is Galois
for j in [1..triv] do
TG:=TransitiveGroup(g,j);
Append(~ord_hol,Order(Holomorph(TG)));
end for;
//We calculate the maximum of ord_hol
max:=ord_hol[1];
for j in [2..#ord_hol] do
//#ord_hol le triv, but it will be strictly minor
//when there are repeated values in ord_hol
if max lt ord_hol[j] then
max:=ord_hol[j];
end if;
end for;
end if;
if i le max then
count_max:=count_max+count;
end if;
delete(count);
end if;
i:=i+g;
end while;
delete(m); n:=count_max;
//----------------------------------------------//----DETERMINATION OF HOPF GALOIS STRUCTURES---//----------------------------------------------TG:=[TransitiveGroup(g,i) : i in [1..triv]]; //Reg. subg. of Sg
NTG:=[Normalizer(S,TG[i]) : i in [1..triv]];
T:=[Transversal(S,NTG[i]) : i in [1..triv]];

17

Trans:=[[x : x in T[i]]
: i in [1..triv]];
//Transversal calculates right cosets; since we want the left ones,
//we calculate TGij doing (Trans[i][j]^-1)*x*Trans[i][j]
//instead of Trans[i][j]*x*(Trans[i][j]^-1)
set_i:=[i: i in [1..triv]];
useful:=[]; //Transitive groups which do have some H-G structure
HG_str:=[];
//Information about H-G structures
enes:=[]; m:=0; //We enumerate H-G structures
total:=0;
//We count the total number of H-G structures
total_ac:=0;
//We count the total number of a-c structures
for k in [1..n] do
G:=TransitiveGroup(g,k); //it is contained in Sg
GenG:=[x:x in Generators(G)];
flag:=0; //it indicates if G has some HG structure
//REGULAR SUBGROUPS OF Sg NORMALIZED BY G
i_0:=1; aux:=[];
while (i_0 le #set_i) and (#set_i ge 1) do
i:=set_i[i_0];
if Order(G) le ord_hol[i] then
count:=0; //We count Hopf Galois structures
count_ac:=0; //We count almost-classical structures
for j in [1..#T[i]] do //#T[i]=#conjugacy classes of TG[i]
GenN:=[(Trans[i][j]^-1)*x*Trans[i][j]:x in Generators(TG[i])];
N:=sub<S|GenN>; //candidates to give a Hopf Galois structure
//we see whether N is normalized by G
indicator:=1; u:=1;
while (u le #GenG) and (indicator eq 1) do
v:=1;
while (v le #GenN) and (indicator eq 1) do
if GenN[v]^GenG[u] notin N then //n^g=g^-1*n*g
indicator:=0;
end if;
v:=v+1;
end while; //v
u:=u+1; delete(v);
end while; //u
delete(u);
if indicator eq 1 then
count:=count+1;
m:=m+1; Append(~enes,<m,k,i,N,0>);
//PARTICULAR CASE: ALMOST-CLASSICAL GALOIS STRUCTURES
if Centralizer(S,N) subset G then
count_ac:=count_ac+1;
enes[m][5]:=2;
end if;
end if;
delete(N); delete(GenN); delete(indicator);
end for; //j
18

if count ne 0 then //there are H-G structures
flag:=1; Append(~HG_str,<k,i,count,count_ac>);
end if;
total:=total+count; total_ac:=total_ac+count_ac;
delete(count); delete(count_ac);
else
Append(~aux,i);
//If Order(G)>Order(Hol(TG[i])) for a certain i, it will still
//happen for the next G’s, so we take away this index from set_i
end if;
i_0:=i_0+1;
end while; //i
if flag eq 1 then //there are H-G structures
Append(~useful,k);
end if;
if #aux gt 0 then
for j in aux do
Exclude(~set_i,j);
end for;
end if;
delete(G); delete(GenG); delete(flag); delete(i_0); delete(aux);
end for;//k
delete(TG); delete(NTG); delete(T); delete(Trans); delete(m); delete(set_i);
//----------------------------------------------//-----------BIJECTIVE CORRESPONDENCES----------//----------------------------------------------//-----CLASSICAL GALOIS THEORY----intfields:=[];
for k in useful do
count:=0;
G:=TransitiveGroup(g,k); H:=Stabilizer(G,1); //H=G’
SC:=SubgroupClasses(G); //conjugacy classes of subgroups
L:=[x: x in Class(G,SC[j]‘subgroup), j in [1..#SC]];
//L contains all the subgroups of G
for j in [1..#L] do
if H subset L[j] then
count:=count +1;
end if;
end for; //j
Append(~intfields,count);
delete(count); delete(G); delete(H); delete(SC); delete(L);
end for; //k
//-----HOPF GALOIS THEORY----//We know that the Galois correspondence of the H-G theory is injective,
//but we wonder when it is bijective, as in the classical Galois theory.
19

subGst:=[]; //number of G-stable subgrups for each N
for m in [1..#enes] do
if enes[m][5] eq 0 then //HG structures which are not almost-classical
count:=0;
k:=enes[m][2];
G:=[x: x in Generators(TransitiveGroup(g,k))];
N:=enes[m][4];
SC:=SubgroupClasses(N); //conjugacy classes of subgroups
L:=[x: x in Class(N,SC[j]‘subgroup), j in [1..#SC]];
//L contains all the subgroups of N
for j in [1..#L] do
//we see whether L[j] is normalized by G
Lj:=[x: x in Generators(L[j])];
indicator:=1; u:=1;
while (u le #G) and (indicator eq 1) do
v:=1;
while (v le #Lj) and (indicator eq 1) do
if Lj[v]^G[u] notin L[j] then //n^g=g^-1*n*g
indicator:=0;
end if;
v:=v+1;
end while; //v
u:=u+1; delete(v);
end while; //u
delete(u);
if indicator eq 1 then
count:=count +1;
end if;
end for;//j
Append(~subGst,count);
if intfields[Position(useful,k)] eq count then
enes[m][5]:=1;
end if;
delete(count); delete(G); delete(N); delete(SC); delete(L);
delete(Lj);
else //almost-classical structures
k:=enes[m][2];
Append(~subGst,intfields[Position(useful,k)]); delete(k);
end if;
end for; //m
delete(intfields);
//----------------------------------------------//-------------G-ISOMORPHISM CLASSES------------//----------------------------------------------Giso:=[]; Giso_count:=[]; m:=1;
for number in [1..#HG_str] do
k:=HG_str[number][1]; i:=HG_str[number][2]; nNiso:=HG_str[number][3];
20

G:=[x:x in Generators(TransitiveGroup(g,k))];
//Fixed k and i, nNiso gives the number of isomorph N’s
if nNiso eq 1 then
Append(~Giso,<k,i,{<m,enes[m][4]>}>); Append(~Giso_count,<k,i,1>);
else //nNiso ge 2
count:=0;
set_a:=[x: x in [m..m+nNiso-1]]; a:=set_a[1];
while (#set_a ge 2) and (a lt set_a[#set_a]) do
index:=[a];
for b in [set_a[2]..set_a[#set_a]] do
N1:=enes[a][4];
if subGst[a] eq subGst[b] then
N2:=enes[b][4];
_,h:=IsIsomorphic(N1,N2); //It is always true
H:=Stabilizer(Normalizer(S,N2),1); //Aut(N2)
H:=[x:x in H]; //It is a subgroup of S=Sym(g)
GN1:=[x:x in Generators(N1)];
u:=1; indicator:=0;
while (u le #H) and (indicator eq 0) do
v:=1; flag:=1;
while (v le #GN1) and (flag eq 1) do //#GN1=#Generators(N1)
w:=1;
while (w le #G) and (flag eq 1) do //#G=#Generators(G)
x1:=G[w]*GN1[v]*G[w]^-1;
//It is in N1 because N1 is normalized by G
x2:=G[w]*H[u]*h(GN1[v])*H[u]^-1*G[w]^-1;
if H[u]*h(x1)*(H[u]^-1) ne x2 then
flag:=0;
end if;
w:=w+1;
end while; //w
v:=v+1; delete(w);
end while; //v
delete(v);
if flag eq 1 then
indicator:=1; Append(~index,b);
//a and b correspond to N1 and N2, respectively
end if;
u:=u+1; delete(flag);
end while; //u
delete(N1); delete(N2); delete(h); delete(H);
delete(u); delete(indicator);
end if;
end for; //b
Append(~Giso,<k,i,{<j,enes[j][4]>:j in index}>);
//index keeps an isomorphism class
21

count:=count+1;
for j in index do
Exclude(~set_a,j);
end for;
delete(index);
if #set_a ne 0 then
a:=set_a[1];
if #set_a eq 1 then
Append(~Giso,<k,i,{<a,enes[a][4]>}>);
count:=count+1;
end if;
end if;
end while;
if count ne 0 then //There are G-isomorphism classes
Append(~Giso_count,<k,i,count>);
end if;
delete(count);
end if;
m:=m+nNiso;
delete(k); delete(i); delete(nNiso); delete(G);
end for; //j
delete(m); delete(subGst);
return <n,triv,HG_str,total,total_ac,useful,enes,Giso,Giso_count>;
end function;
//Recall that k refers to a transitive group of Sg, i -> HG struct type
//and N -> regular subgroup of Sg normalized by G
//DESCRIPTIVE FUNCTION
HGdescription:=function(g)
HG:=HopfGalois(g);
S:=Sym(g); n:=NumberOfTransitiveGroups(g);
print "The number of transitive groups of", S, "is", n;
print "From index", HG[1], "on, the transitive groups",
"do not have any Hopf Galois structure.";
print "-----------------------------------------";
//Regular subgroups = subgroups G=Gal(L’|K) when L’=L
print "The regular subgroups of S are";
for i in [1..HG[2]] do //HG[2]=triv
TransitiveGroup(g,i);
end for;
print "---------";
print "In total, there are", HG[2], "regular subgroups.";
//HG[3]=HG_str={x: x=<k,i,count,count_ac>}
print "--------------------------";
22

print "--------------------------";
print "SUMMARIZED INFORMATION";
number:=1; a:=1; b:=1;
for k in HG[6] do //HG[6]=useful
print "--------------------------";
print "--------------------------";
print "
Transitive Group", k;
print "--------------------------";
G:=TransitiveGroup(g,k); G;
print "--------------------------";
print "--------------------------";
c:=0; c_total:=0; c_ac:=0; c_bc:=0; c_Giso:=0;
//We count the number of types of HG structures (index i) for each k
while (number le #HG[3]) and (HG[3][number][1] eq k) do
number:=number+1; c:=c+1;
end while;
number:=number-c;
for j in [1..c] do
i:=HG[3][number][2];
//The number of subgroups conjugated to N normalized by G
//is equivalent to the number of Hopf Galois structures of type N
print "The number of Hopf Galois structures of type";
TransitiveGroup(g,i); print "is", HG[3][number][3];
c_total:=c_total+HG[3][number][3];
print "From these, the number of almost classical structures is",
HG[3][number][4]; c_ac:=c_ac+HG[3][number][4];
//We count the number of bijective correspondences: HG[7]=bij_cor
count:=0;
while a le #HG[7] and HG[7][a][2] eq k and HG[7][a][3] eq i do
if HG[7][a][5] ne 0 then
count:=count+1;
end if;
a:=a+1;
end while;
if count ne 0 then
print "The number of bijective correspondences is", count;
c_bc:=c_bc+count;
end if;
delete(count);
//We recover the number of G-isomorphism classes: HG[9]=Giso_count
print "The number of G-isomorphism classes is", HG[9][b][3];
c_Giso:=c_Giso+HG[9][b][3]; b:=b+1;
print "--------------------------";
number:=number+1;
end for; //j
print "All in all, we conclude that for the transitive group", k;
print "- The number of Hopf Galois structures is", c_total;
print " From these, the number of almost classical structures is",
23

c_ac;
print "- The number of bijective correspondences is", c_bc;
print "- The number of G-isomorphism classes is", c_Giso;
delete(c); delete(c_total); delete(c_ac); delete(c_bc);
delete(c_Giso);
end for; //k
delete(number); delete(a); delete(b);
//HG[4]=total, HG[5]=total_ac
print "--------------------------";
print "--------------------------";
print "The total number of Hopf Galois structures is", HG[4];
print "From these, the total number of almost classical structures is",
HG[5];
//HG[6]=useful
print "-----------------------------------------";
print "The transitive groups which do have some H-G structure are";
HG[6];
print "-----------------------------------------";
//HG[7]=enes={x: x=<m,k,i,N,j>}, where j in {0,1,2}
//0->not BC, 1->BC, 2->a-c struct (and so, BC)
print "-----------------------------------------";
print "----------------ENES---------------------";
HG[7];
print "-----------------------------------------";
print "--------BIJECTIVE CORRESPONDENCES--------";
print "-----------------------------------------";
bc:=[]; //HG which are not almost-classical but do have BC
ac:=[]; //almost-classical structures
for m in [1..#HG[7]] do
if HG[7][m][5] eq 1 then
Append(~bc,HG[7][m][1]);
elif HG[7][m][5] eq 2 then
Append(~ac,HG[7][m][1]);
end if;
end for;
print
bc;
print
print
print
print
ac;
print
print

"Bijective correspondences of HG structures which are not a-c";
"-----------";
"There are", #bc, "bijective correspondences";
"------------------------";
"Almost classical structures";
"-----------";
"There are", #ac, "almost classical structures";
24

print "------------------------";
print "The total number of bijective Galois correspondences is",
#bc+#ac; delete(bc); delete(ac);
print "-----------------------------------------";
//HG[8]=Giso={x: x=<k,i,{<m_1,Nm_1>,...,<m_r,Nm_r>}>}
//HG[9]=Giso_count={x: x=<k,i,count>}
print "----PARTITION IN G-ISOMORPHISM CLASSES---";
print "-----------------------------------------";
number:=1; y:=1; count_Galois:=0;
print "--------------------------";
for k in HG[6] do //HG[6]=useful
print "--------------------------";
print "
Transitive Group", k;
print "--------------------------";
print "--------------------------";
c:=0;
//We count the number of types of HG structures (index i) for each k
while number le #HG[9] and HG[9][number][1] eq k do
number:=number+1; c:=c+1;
end while;
number:=number-c;
for j in [1..c] do
i:=HG[9][number][2];
print "Hopf Galois structures of type", i;
count:=HG[9][number][3];
if k le HG[2] then
count_Galois:=count_Galois+count;
end if;
for p in [1..count] do
HG[8][y][3]; y:=y+1;
end for;
print "The number of G-isomorphism classes is", count;
print "--------------------------";
number:=number+1;
delete(i); delete(count);
end for; //j
delete(c);
end for; //k
delete(number); delete(y);
print "-----------------------------------------";
print "The total number of G-isomorphism classes is", #HG[8];
print "From these, the total number corresponding to Galois ext. is",
count_Galois; delete(count_Galois);
return "----------------------------------------";
end function;

25

