# Cyclotomic extensions #

Let A and B be commutative rings with Algebra A B. For S : Set ℕ+, we define a class IsCyclotomicExtension S A B expressing the fact that B is obtained from A by adding n-th primitive roots of unity, for all n ∈ S.

## Main definitions #

• IsCyclotomicExtension S A B : means that B is obtained from A by adding n-th primitive roots of unity, for all n ∈ S.
• CyclotomicField: given n : ℕ+ and a field K, we define CyclotomicField n K as the splitting field of cyclotomic n K. If n is nonzero in K, it has the instance IsCyclotomicExtension {n} K (CyclotomicField n K).
• CyclotomicRing : if A is a domain with fraction field K and n : ℕ+, we define CyclotomicRing n A K as the A-subalgebra of CyclotomicField n K generated by the roots of X ^ n - 1. If n is nonzero in A, it has the instance IsCyclotomicExtension {n} A (CyclotomicRing n A K).

## Main results #

• IsCyclotomicExtension.trans : if IsCyclotomicExtension S A B and IsCyclotomicExtension T B C, then IsCyclotomicExtension (S ∪ T) A C if Function.Injective (algebraMap B C).
• IsCyclotomicExtension.union_right : given IsCyclotomicExtension (S ∪ T) A B, then IsCyclotomicExtension T (adjoin A { b : B | ∃ a : ℕ+, a ∈ S ∧ b ^ (a : ℕ) = 1 }) B.
• IsCyclotomicExtension.union_left : given IsCyclotomicExtension T A B and S ⊆ T, then IsCyclotomicExtension S A (adjoin A { b : B | ∃ a : ℕ+, a ∈ S ∧ b ^ (a : ℕ) = 1 }).
• IsCyclotomicExtension.finite : if S is finite and IsCyclotomicExtension S A B, then B is a finite A-algebra.
• IsCyclotomicExtension.numberField : a finite cyclotomic extension of a number field is a number field.
• IsCyclotomicExtension.isSplittingField_X_pow_sub_one : if IsCyclotomicExtension {n} K L, then L is the splitting field of X ^ n - 1.
• IsCyclotomicExtension.splitting_field_cyclotomic : if IsCyclotomicExtension {n} K L, then L is the splitting field of cyclotomic n K.

## Implementation details #

Our definition of IsCyclotomicExtension is very general, to allow rings of any characteristic and infinite extensions, but it will mainly be used in the case S = {n} and for integral domains. All results are in the IsCyclotomicExtension namespace. Note that some results, for example IsCyclotomicExtension.trans, IsCyclotomicExtension.finite, IsCyclotomicExtension.numberField, IsCyclotomicExtension.finiteDimensional, IsCyclotomicExtension.isGalois and CyclotomicField.algebraBase are lemmas, but they can be made local instances. Some of them are included in the Cyclotomic locale.

theorem isCyclotomicExtension_iff (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] :
(∀ {n : ℕ+}, n S∃ (r : B), ) ∀ (x : B), x Algebra.adjoin A {b : B | nS, b ^ n = 1}
class IsCyclotomicExtension (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] :

Given an A-algebra B and S : Set ℕ+, we define IsCyclotomicExtension S A B requiring that there is an n-th primitive root of unity in B for all n ∈ S and that B is generated over A by the roots of X ^ n - 1.

• exists_prim_root : ∀ {n : ℕ+}, n S∃ (r : B),

For all n ∈ S, there exists a primitive n-th root of unity in B.

• adjoin_roots : ∀ (x : B), x Algebra.adjoin A {b : B | nS, b ^ n = 1}

The n-th roots of unity, for n ∈ S, generate B as an A-algebra.

Instances
theorem IsCyclotomicExtension.exists_prim_root {S : } (A : Type u) {B : Type v} [] [] [Algebra A B] [self : ] {n : ℕ+} (ha : n S) :
∃ (r : B),

For all n ∈ S, there exists a primitive n-th root of unity in B.

theorem IsCyclotomicExtension.adjoin_roots {S : } {A : Type u} {B : Type v} [] [] [Algebra A B] [self : ] (x : B) :
x Algebra.adjoin A {b : B | nS, b ^ n = 1}

The n-th roots of unity, for n ∈ S, generate B as an A-algebra.

theorem IsCyclotomicExtension.iff_adjoin_eq_top (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] :
(nS, ∃ (r : B), ) Algebra.adjoin A {b : B | nS, b ^ n = 1} =

A reformulation of IsCyclotomicExtension that uses ⊤.

theorem IsCyclotomicExtension.iff_singleton (n : ℕ+) (A : Type u) (B : Type v) [] [] [Algebra A B] :
(∃ (r : B), ) ∀ (x : B), x Algebra.adjoin A {b : B | b ^ n = 1}

A reformulation of IsCyclotomicExtension in the case S is a singleton.

theorem IsCyclotomicExtension.empty (A : Type u) (B : Type v) [] [] [Algebra A B] [h : ] :

If IsCyclotomicExtension ∅ A B, then the image of A in B equals B.

theorem IsCyclotomicExtension.singleton_one (A : Type u) (B : Type v) [] [] [Algebra A B] [h : ] :

If IsCyclotomicExtension {1} A B, then the image of A in B equals B.

theorem IsCyclotomicExtension.singleton_zero_of_bot_eq_top {A : Type u} {B : Type v} [] [] [Algebra A B] (h : ) :

If (⊥ : SubAlgebra A B) = ⊤, then IsCyclotomicExtension ∅ A B.

theorem IsCyclotomicExtension.trans (S : ) (T : ) (A : Type u) (B : Type v) [] [] [Algebra A B] (C : Type w) [] [Algebra A C] [Algebra B C] [] [hS : ] [hT : ] (h : Function.Injective ()) :

Transitivity of cyclotomic extensions.

theorem IsCyclotomicExtension.subsingleton_iff (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] [] :
S = S = {1}
theorem IsCyclotomicExtension.union_right (S : ) (T : ) (A : Type u) (B : Type v) [] [] [Algebra A B] [h : IsCyclotomicExtension (S T) A B] :
IsCyclotomicExtension T ((Algebra.adjoin A {b : B | aS, b ^ a = 1})) B

If B is a cyclotomic extension of A given by roots of unity of order in S ∪ T, then B is a cyclotomic extension of adjoin A { b : B | ∃ a : ℕ+, a ∈ S ∧ b ^ (a : ℕ) = 1 } given by roots of unity of order in T.

theorem IsCyclotomicExtension.union_left (S : ) (T : ) (A : Type u) (B : Type v) [] [] [Algebra A B] [h : ] (hS : S T) :
IsCyclotomicExtension S A (Algebra.adjoin A {b : B | aS, b ^ a = 1})

If B is a cyclotomic extension of A given by roots of unity of order in T and S ⊆ T, then adjoin A { b : B | ∃ a : ℕ+, a ∈ S ∧ b ^ (a : ℕ) = 1 } is a cyclotomic extension of B given by roots of unity of order in S.

theorem IsCyclotomicExtension.of_union_of_dvd {n : ℕ+} {S : } (A : Type u) (B : Type v) [] [] [Algebra A B] (h : sS, n s) (hS : S.Nonempty) [H : ] :

If ∀ s ∈ S, n ∣ s and S is not empty, then IsCyclotomicExtension S A B implies IsCyclotomicExtension (S ∪ {n}) A B.

theorem IsCyclotomicExtension.iff_union_of_dvd {n : ℕ+} {S : } (A : Type u) (B : Type v) [] [] [Algebra A B] (h : sS, n s) (hS : S.Nonempty) :

If ∀ s ∈ S, n ∣ s and S is not empty, then IsCyclotomicExtension S A B if and only if IsCyclotomicExtension (S ∪ {n}) A B.

theorem IsCyclotomicExtension.iff_union_singleton_one (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] :

IsCyclotomicExtension S A B is equivalent to IsCyclotomicExtension (S ∪ {1}) A B.

theorem IsCyclotomicExtension.singleton_one_of_bot_eq_top {A : Type u} {B : Type v} [] [] [Algebra A B] (h : ) :

If (⊥ : SubAlgebra A B) = ⊤, then IsCyclotomicExtension {1} A B.

If Function.Surjective (algebraMap A B), then IsCyclotomicExtension {1} A B.

theorem IsCyclotomicExtension.equiv (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] {C : Type u_1} [] [Algebra A C] [h : ] (f : B ≃ₐ[A] C) :

Given (f : B ≃ₐ[A] C), if IsCyclotomicExtension S A B then IsCyclotomicExtension S A C.

theorem IsCyclotomicExtension.neZero (n : ℕ+) (A : Type u) (B : Type v) [] [] [Algebra A B] [h : ] [] :
NeZero n
theorem IsCyclotomicExtension.neZero' (n : ℕ+) (A : Type u) (B : Type v) [] [] [Algebra A B] [] [] :
NeZero n
theorem IsCyclotomicExtension.finite_of_singleton (n : ℕ+) (A : Type u) (B : Type v) [] [] [Algebra A B] [] [h : ] :
theorem IsCyclotomicExtension.finite (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] [] [h₁ : Finite S] [h₂ : ] :

If S is finite and IsCyclotomicExtension S A B, then B is a finite A-algebra.

theorem IsCyclotomicExtension.numberField (S : ) (K : Type w) (L : Type z) [] [] [Algebra K L] [h : ] [Finite S] [] :

A cyclotomic finite extension of a number field is a number field.

theorem IsCyclotomicExtension.integral (S : ) (A : Type u) (B : Type v) [] [] [Algebra A B] [] [] [Finite S] [] :

A finite cyclotomic extension of an integral noetherian domain is integral

theorem IsCyclotomicExtension.finiteDimensional (S : ) (K : Type w) [] (C : Type z) [Finite S] [] [Algebra K C] [] [] :

If S is finite and IsCyclotomicExtension S K A, then finiteDimensional K A.

theorem IsCyclotomicExtension.adjoin_roots_cyclotomic_eq_adjoin_nth_roots {A : Type u} {B : Type v} [] [] [Algebra A B] [] {ζ : B} {n : ℕ+} (hζ : ) :
Algebra.adjoin A (().rootSet B) = Algebra.adjoin A {b : B | a{n}, b ^ a = 1}
theorem IsCyclotomicExtension.adjoin_roots_cyclotomic_eq_adjoin_root_cyclotomic {A : Type u} {B : Type v} [] [] [Algebra A B] {n : ℕ+} [] {ζ : B} (hζ : ) :
theorem IsCyclotomicExtension.adjoin_primitive_root_eq_top {A : Type u} {B : Type v} [] [] [Algebra A B] {n : ℕ+} [] [h : ] {ζ : B} (hζ : ) :
theorem IsPrimitiveRoot.adjoin_isCyclotomicExtension (A : Type u) {B : Type v} [] [] [Algebra A B] {ζ : B} {n : ℕ+} (h : ) :
theorem IsCyclotomicExtension.splits_X_pow_sub_one {n : ℕ+} {S : } (K : Type w) (L : Type z) [] [] [Algebra K L] [H : ] (hS : n S) :
Polynomial.Splits () (Polynomial.X ^ n - 1)

A cyclotomic extension splits X ^ n - 1 if n ∈ S.

theorem IsCyclotomicExtension.splits_cyclotomic {n : ℕ+} {S : } (K : Type w) (L : Type z) [] [] [Algebra K L] [] (hS : n S) :

A cyclotomic extension splits cyclotomic n K if n ∈ S and ne_zero (n : K).

theorem IsCyclotomicExtension.isSplittingField_X_pow_sub_one (n : ℕ+) (K : Type w) (L : Type z) [] [] [Algebra K L] [] :
Polynomial.IsSplittingField K L (Polynomial.X ^ n - 1)

If IsCyclotomicExtension {n} K L, then L is the splitting field of X ^ n - 1.

def IsCyclotomicExtension.algEquiv (n : ℕ+) (K : Type w) (L : Type z) [] [] [Algebra K L] [] (L' : Type u_1) [Field L'] [Algebra K L'] [IsCyclotomicExtension {n} K L'] :
L ≃ₐ[K] L'

Any two n-th cyclotomic extensions are isomorphic.

Equations
• One or more equations did not get rendered due to their size.
Instances For
theorem IsCyclotomicExtension.isGalois (n : ℕ+) (K : Type w) (L : Type z) [] [] [Algebra K L] [] :
theorem IsCyclotomicExtension.splitting_field_cyclotomic (n : ℕ+) (K : Type w) (L : Type z) [] [] [Algebra K L] [] :

If IsCyclotomicExtension {n} K L, then L is the splitting field of cyclotomic n K.

def CyclotomicField (n : ℕ+) (K : Type w) [] :

Given n : ℕ+ and a field K, we define CyclotomicField n K as the splitting field of cyclotomic n K. If n is nonzero in K, it has the instance IsCyclotomicExtension {n} K (CyclotomicField n K).

Equations
• = ().SplittingField
Instances For
instance CyclotomicField.instField (n : ℕ+) (K : Type w) [] :
Equations
• = id inferInstance
instance CyclotomicField.algebra (n : ℕ+) (K : Type w) [] :
Algebra K ()
Equations
• = id inferInstance
instance CyclotomicField.instInhabited (n : ℕ+) (K : Type w) [] :
Equations
• = id inferInstance
instance CyclotomicField.instCharZero (n : ℕ+) (K : Type w) [] [] :
Equations
• =
instance CyclotomicField.isCyclotomicExtension (n : ℕ+) (K : Type w) [] [NeZero n] :
Equations
• =
instance CyclotomicField.algebraBase (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :
Algebra A ()

If K is the fraction field of A, the A-algebra structure on CyclotomicField n K.

Equations
instance CyclotomicField.algebra' (n : ℕ+) (K : Type w) [] {R : Type u_1} [] [Algebra R K] :
Algebra R ()
Equations
instance instIsScalarTowerCyclotomicField (n : ℕ+) (K : Type w) [] {R : Type u_1} [] [Algebra R K] :
Equations
• =
instance CyclotomicField.noZeroSMulDivisors (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] [] :
Equations
• =
def CyclotomicRing (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :

If A is a domain with fraction field K and n : ℕ+, we define CyclotomicRing n A K as the A-subalgebra of CyclotomicField n K generated by the roots of X ^ n - 1. If n is nonzero in A, it has the instance IsCyclotomicExtension {n} A (CyclotomicRing n A K).

Equations
Instances For
instance CyclotomicRing.instCommRing (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :
Equations
• = id inferInstance
instance CyclotomicRing.instIsDomain (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :
Equations
• =
instance CyclotomicRing.instInhabited (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :
Equations
• = id inferInstance
instance CyclotomicRing.algebraBase (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :
Algebra A ()

The A-algebra structure on CyclotomicRing n A K.

Equations
instance CyclotomicRing.instNoZeroSMulDivisors (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] [] :
Equations
• =
theorem CyclotomicRing.algebraBase_injective (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] [] :
instance CyclotomicRing.instAlgebraCyclotomicField (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :
Algebra () ()
Equations
Equations
• =
instance CyclotomicRing.instIsScalarTowerCyclotomicField (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] :
Equations
• =
instance CyclotomicRing.isCyclotomicExtension (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] [] [NeZero n] :
Equations
• =
Equations
• =
theorem CyclotomicRing.eq_adjoin_primitive_root (n : ℕ+) (A : Type u) (K : Type w) [] [] [Algebra A K] {μ : } (h : ) :
Algebraically closed fields are S-cyclotomic extensions over themselves if NeZero ((a : ℕ) : K)) for all a ∈ S.