Documentation

Mathlib.RingTheory.Polynomial.Cyclotomic.Roots

Roots of cyclotomic polynomials. #

We gather results about roots of cyclotomic polynomials. In particular we show in Polynomial.cyclotomic_eq_minpoly that cyclotomic n R is the minimal polynomial of a primitive root of unity.

Main results #

• IsPrimitiveRoot.isRoot_cyclotomic : Any n-th primitive root of unity is a root of cyclotomic n R.
• isRoot_cyclotomic_iff : if NeZero (n : R), then μ is a root of cyclotomic n R if and only if μ is a primitive root of unity.
• Polynomial.cyclotomic_eq_minpoly : cyclotomic n ℤ is the minimal polynomial of a primitive n-th root of unity μ.
• Polynomial.cyclotomic.irreducible : cyclotomic n ℤ is irreducible.

Implementation details #

To prove Polynomial.cyclotomic.irreducible, the irreducibility of cyclotomic n ℤ, we show in Polynomial.cyclotomic_eq_minpoly that cyclotomic n ℤ is the minimal polynomial of any n-th primitive root of unity μ : K, where K is a field of characteristic 0.

theorem Polynomial.isRoot_of_unity_of_root_cyclotomic {R : Type u_1} [] {n : } {ζ : R} {i : } (hi : ) (h : ) :
ζ ^ n = 1
theorem isRoot_of_unity_iff {n : } (h : 0 < n) (R : Type u_2) [] [] {ζ : R} :
ζ ^ n = 1 i,
theorem IsPrimitiveRoot.isRoot_cyclotomic {R : Type u_1} [] {n : } [] (hpos : 0 < n) {μ : R} (h : ) :

Any n-th primitive root of unity is a root of cyclotomic n R.

theorem Polynomial.isRoot_cyclotomic_iff {R : Type u_1} [] {n : } [] [NeZero n] {μ : R} :
theorem Polynomial.roots_cyclotomic_nodup {R : Type u_1} [] {n : } [] [NeZero n] :
theorem Polynomial.cyclotomic.roots_to_finset_eq_primitiveRoots {R : Type u_1} [] {n : } [] [NeZero n] :
{ val := , nodup := (_ : ) } =
theorem Polynomial.cyclotomic.roots_eq_primitiveRoots_val {R : Type u_1} [] {n : } [] [NeZero n] :
= ().val
theorem Polynomial.isRoot_cyclotomic_iff_charZero {n : } {R : Type u_2} [] [] [] {μ : R} (hn : 0 < n) :

If R is of characteristic zero, then ζ is a root of cyclotomic n R if and only if it is a primitive n-th root of unity.

theorem Polynomial.cyclotomic_injective {R : Type u_1} [] [] :

Over a ring R of characteristic zero, fun n => cyclotomic n R is injective.

theorem IsPrimitiveRoot.minpoly_dvd_cyclotomic {n : } {K : Type u_2} [] {μ : K} (h : ) (hpos : 0 < n) [] :

The minimal polynomial of a primitive n-th root of unity μ divides cyclotomic n ℤ.

theorem IsPrimitiveRoot.minpoly_eq_cyclotomic_of_irreducible {K : Type u_2} [] {R : Type u_3} [] [] {μ : R} {n : } [Algebra K R] (hμ : ) (h : ) [NeZero n] :
= minpoly K μ
theorem Polynomial.cyclotomic_eq_minpoly {n : } {K : Type u_2} [] {μ : K} (h : ) (hpos : 0 < n) [] :

cyclotomic n ℤ is the minimal polynomial of a primitive n-th root of unity μ.

theorem Polynomial.cyclotomic_eq_minpoly_rat {n : } {K : Type u_2} [] {μ : K} (h : ) (hpos : 0 < n) [] :

cyclotomic n ℚ is the minimal polynomial of a primitive n-th root of unity μ.

theorem Polynomial.cyclotomic.irreducible {n : } (hpos : 0 < n) :

cyclotomic n ℤ is irreducible.

theorem Polynomial.cyclotomic.irreducible_rat {n : } (hpos : 0 < n) :

cyclotomic n ℚ is irreducible.

theorem Polynomial.cyclotomic.isCoprime_rat {n : } {m : } (h : n m) :

If n ≠ m, then (cyclotomic n ℚ) and (cyclotomic m ℚ) are coprime.