Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: Math 582b
Views: 597

Problem 2:

Write a function that takes as input a positive integer nn and outputs the first nn levels of the cyclotomic Z3\ZZ_3-extension of Q\QQ as a tower of relative extensions (so each field has degree 3 over the one below it). The code should 'work' in general, though of course it will likely be very, very slow as nn gets bigger. How big of nn can you give as input before this starts taking a long time or getting slow?

Figuring out what I mean by "the cyclotomic Z3\ZZ_3 extension of Q\QQ" is part of this problem. If you don't know, start by asking any student of Ralph Greenberg.

Let KK be the cyclotomic field of order 3n+13^{n+1} and write Gal(K/Q)=τ×σZ/(2)×Z/(3n)=Gal(K/\QQ) =\langle \tau \rangle \times \langle \sigma \rangle\cong \ZZ/(2) \times \ZZ/(3^n)=. Let zz be a primitive 3n+13^{n+1}th root of unity and yk=z3k+z3ky_k=z^{3^k}+\overline{z^{3^k}} for 0kn0\leq k \leq n. Then yky_k is invariant under τ\tau for all kk and yky_k is invariant under σ3j\sigma^{3^j} if and only if jnkj\geq n-k (take the jj mod 3n3^n). Hence, the fixed field of τ×σ3k\langle \tau \rangle \times \langle \sigma^{3^k} \rangle is Q(ynk)\QQ(y_{n-k}). The code below will successfully adjoin the yky_k's using the fact (which can be proved via induction) that ±yk\pm y_k solves x33x+yk+1=0x^3-3x+y_{k+1}=0.

def threecyclotomic(n): K.<z> = CyclotomicField(3^(n+1)) Ks = [QQ] R = QQ['t0'] Rs = [R] for j in [1..n]: newField = Ks[-1].extension((Rs[-1].0)^3 - 3*(Rs[-1].0) + Ks[-1].0,'a%s'%j) Ks.append(newField) Rs.append(newField['t%s'%j]) return Ks
%time threecyclotomic(5)
[Rational Field, Number Field in a1 with defining polynomial t0^3 - 3*t0 + 1, Number Field in a2 with defining polynomial t1^3 - 3*t1 + a1 over its base field, Number Field in a3 with defining polynomial t2^3 - 3*t2 + a2 over its base field, Number Field in a4 with defining polynomial t3^3 - 3*t3 + a3 over its base field, Number Field in a5 with defining polynomial t4^3 - 3*t4 + a4 over its base field] CPU time: 1.06 s, Wall time: 1.12 s
%time threecyclotomic(7)
[Rational Field, Number Field in a1 with defining polynomial t0^3 - 3*t0 + 1, Number Field in a2 with defining polynomial t1^3 - 3*t1 + a1 over its base field, Number Field in a3 with defining polynomial t2^3 - 3*t2 + a2 over its base field, Number Field in a4 with defining polynomial t3^3 - 3*t3 + a3 over its base field, Number Field in a5 with defining polynomial t4^3 - 3*t4 + a4 over its base field, Number Field in a6 with defining polynomial t5^3 - 3*t5 + a5 over its base field, Number Field in a7 with defining polynomial t6^3 - 3*t6 + a6 over its base field] CPU time: 75.71 s, Wall time: 78.90 s
%time K = threecyclotomic(2)
CPU time: 0.04 s, Wall time: 0.09 s
K
[Rational Field, Number Field in a1 with defining polynomial t0^3 - 3*t0 + 1, Number Field in a2 with defining polynomial t1^3 - 3*t1 + a1 over its base field]
K[-1].absolute_field('a').defining_polynomial().galois_group()
Transitive group number 1 of degree 9
K[-1].absolute_field('a').discriminant().factor()
3^22