Primitive roots in cyclotomic fields #
If is_cyclotomic_extension {n} A B
, we define an element zeta n A B : B
that is (under certain
assumptions) a primitive n
-root of unity in B
and we study its properties. We also prove related
theorems under the more general assumption of just being a primitive root, for reasons described
in the implementation details section.
Main definitions #
is_cyclotomic_extension.zeta n A B
: ifis_cyclotomic_extension {n} A B
, thanzeta n A B
is an element ofB
that plays the role of a primitiven
-th root of unity.is_primitive_root.power_basis
: ifK
andL
are fields such thatis_cyclotomic_extension {n} K L
andne_zero (↑n : K)
, thenis_primitive_root.power_basis
gives a K-power basis for L given a primitive rootζ
.is_primitive_root.embeddings_equiv_primitive_roots
: the equivalence betweenL →ₐ[K] A
andprimitive_roots n A
given by the choice ofζ
.
Main results #
is_cyclotomic_extension.zeta_primitive_root
: ifis_domain B
andne_zero (↑n : B)
, thenzeta n A B
is a primitiven
-th root of unity.is_cyclotomic_extension.finrank
: ifirreducible (cyclotomic n K)
(in particular forK = ℚ
), then thefinrank
of a cyclotomic extension isn.totient
.is_primitive_root.norm_eq_one
: IfK
is linearly ordered (in particular forK = ℚ
), the norm of a primitive root is1
ifn
is odd.is_primitive_root.sub_one_norm_eq_eval_cyclotomic
: Ifirreducible (cyclotomic n K)
, then the norm ofζ - 1
iseval 1 (cyclotomic n ℤ)
.
Implementation details #
zeta n A B
is defined as any root of cyclotomic n A
in B
, that exists because of
is_cyclotomic_extension {n} A B
. It is not true in general that it is a primitive n
-th root of
unity, but this holds if is_domain B
and ne_zero (↑n : B)
.
zeta n A B
is defined using exists.some
, which means we cannot control it.
For example, in normal mathematics, we can demand that (zeta p ℤ ℤ[ζₚ] : ℚ(ζₚ))
is equal to
zeta p ℚ ℚ(ζₚ)
, as we are just choosing "an arbitrary primitive root" and we can internally
specify that our choices agree. This is not the case here, and it is indeed impossible to prove that
these two are equal. Therefore, whenever possible, we prove our results for any primitive root,
and only at the "final step", when we need to provide an "explicit" primitive root, we use zeta
.
If B
is a n
-th cyclotomic extension of A
, then zeta n A B
is any root of
cyclotomic n A
in L.
Equations
- is_cyclotomic_extension.zeta n A B = _.some
The power_basis
given by a primitive root ζ
.
Equations
- is_primitive_root.power_basis K hζ = (algebra.adjoin.power_basis _).map (((algebra.adjoin K {ζ}).equiv_of_eq ⊤ _).trans algebra.top_equiv)
The equivalence between L →ₐ[K] A
and primitive_roots n A
given by a primitive root ζ
.
Equations
- is_primitive_root.embeddings_equiv_primitive_roots C hζ hirr = (is_primitive_root.power_basis K hζ).lift_equiv.trans {to_fun := λ (x : {y // ⇑(polynomial.aeval y) (minpoly K (is_primitive_root.power_basis K hζ).gen) = 0}), ⟨x.val, _⟩, inv_fun := λ (x : ↥(primitive_roots ↑n C)), ⟨x.val, _⟩, left_inv := _, right_inv := _}
If irreducible (cyclotomic n K)
(in particular for K = ℚ
), then the finrank
of a
cyclotomic extension is n.totient
.
If K
is linearly ordered (in particular for K = ℚ
), the norm of a primitive root is 1
if n
is odd.
If irreducible (cyclotomic n K)
(in particular for K = ℚ
), then the norm of
ζ - 1
is eval 1 (cyclotomic n ℤ)
.