Ask Your Question

# fixed subfield of cyclotomic field

What would be a simple way, given a subgroup $G$ of $(\mathbf{Z}/m)^*$ (given as a list of integers coprime to $m$)

to define the corresponding (by Galois) subfield of the cyclotomic field $\mathbf{Q}(\zeta_m)$ ?

For example, $m=5$ and the subgroup is given by $L = [1, 4]$.

edit retag close merge delete

## 3 Answers

Sort by » oldest newest most voted

Here is a variation on the answer of rburing. Does it still look correct ?

def subfield(m, L):
K = CyclotomicField(m, 'z')
z = K.zeta(m)
G = K.galois_group()
power_list = [z**k for k in range(m)]
convert = ((sigma, power_list.index(sigma(z)))
for sigma in G)
G_gens = [g for g, i in convert if i in L]
return G.subgroup(G_gens).fixed_field()

more

This is a long comment rather than an answer.

It provides some code to define the objects in the question, in the hope it can help answer it.

### Galois subgroups and their fixed fields

Starting with Sage 9.4.beta1, in which the following ticket was merged:

one can get subgroups of the Galois group of a number field, and the associated fixed fields.

Define a cyclotomic field:

sage: K.<z> = CyclotomicField(5)


Get its Galois group:

sage: G = K.galois_group()
sage: G
Galois group 4T1 (4) with order 4 of x^4 + x^3 + x^2 + x + 1


Get that group's subgroups:

sage: G.subgroups()
[Subgroup generated by [()] of
(Galois group 4T1 (4) with order 4 of x^4 + x^3 + x^2 + x + 1),
Subgroup generated by [(1,3)(2,4)] of
(Galois group 4T1 (4) with order 4 of x^4 + x^3 + x^2 + x + 1),
Subgroup generated by [(1,2,3,4), (1,3)(2,4)] of
(Galois group 4T1 (4) with order 4 of x^4 + x^3 + x^2 + x + 1)]


Get the associated fixed fields:

sage: H, I, J = G.subgroups()
sage: H.fixed_field()
(Cyclotomic Field of order 5 and degree 4,
Identity endomorphism of Cyclotomic Field of order 5 and degree 4)
sage: I.fixed_field()
(Number Field in z0 with defining polynomial x^2 - x - 1 with z0 = -0.618033988749895?,
Ring morphism:
From: Number Field in z0 with defining polynomial x^2 - x - 1 with z0 = -0.618033988749895?
To:   Cyclotomic Field of order 5 and degree 4
Defn: z0 |--> z^3 + z^2 + 1)
sage: J.fixed_field()
(Rational Field,
Coercion map:
From: Rational Field
To:   Cyclotomic Field of order 5 and degree 4)


The action of Galois group elements on field elements is as follows:

sage: G.gens()
[(1,2,3,4)]
sage: g = G.gen()
sage: g
(1,2,3,4)
sage: g.order()
4

sage: g(z)
z^2
sage: g(z^2)
-z^3 - z^2 - z - 1
sage: (g^2)(z)
-z^3 - z^2 - z - 1


### Multiplicative subgroups of cyclic rings

Now let us consider the the cyclic ring on 5 elements:

sage: C = Zmod(5)
sage: C
Ring of integers modulo 5


There are two ways to get the subgroups of its group of units.

The method multiplicative_subgroups gives tuples of generators for these subgroups.

sage: C.multiplicative_subgroups()
((2,), (4,), ())


The other way is to construct the ring's unit group and get its subgroups.

sage: U = C.unit_group()
sage: U.subgroups()
[Multiplicative Abelian subgroup isomorphic to C4 generated by {f},
Multiplicative Abelian subgroup isomorphic to C2 generated by {f^2},
Trivial Abelian subgroup]


There was recently a discussion about working with these subgroups at:

### Putting the pieces together

Hopefully someone sees how to put these pieces together to answer the question satisfactorily!

more

Here you go:

m = 5
Zm = Zmod(m)
L = [Zm(1), Zm(-1)]
K.<z> = CyclotomicField(m)
power_list = [z^k for k in range(m)]
gens_powers = [Zm(power_list.index(sigma(z))) for sigma in K.galois_group().gens()]
gens_powers_logs = matrix(ZZ, [e.generalised_log() for e in gens_powers]).transpose()
L_logs = [vector(ZZ, t.generalised_log()) for t in L]
L_exponents = [list(gens_powers_logs.solve_right(s).change_ring(ZZ)) for s in L_logs]
G_gens = [prod(sigma^k for (sigma,k) in zip(K.galois_group().gens(), L_exponent)) for L_exponent in L_exponents]
G = K.galois_group().subgroup(G_gens)
G.fixed_field()


To check that the group G is correct, you can evaluate [power_list.index(g(z)) for g in G].

The part with solve_right should be improved, because we only want integer solutions.

more

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2021-07-05 17:35:43 +0200

Seen: 126 times

Last updated: Jul 05 '21