File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

full_name: Polynomial.isRoot_of_unity_of_root_cyclotomic
code: theorem isRoot_of_unity_of_root_cyclotomic {ζ : R} {i : ℕ} (hi : i ∈ n.divisors)
    (h : (cyclotomic i R).IsRoot ζ) : ζ ^ n = 1 
goal: ζ ^ n = 1

full_name: isRoot_of_unity_iff
code: theorem _root_.isRoot_of_unity_iff (h : 0 < n) (R : Type*) [CommRing R] [IsDomain R] {ζ : R} :
    ζ ^ n = 1 ↔ ∃ i ∈ n.divisors, (cyclotomic i R).IsRoot ζ 
goal: ζ ^ n = 1 ↔ ∃ i ∈ n.divisors, (Polynomial.cyclotomic i R).IsRoot ζ

full_name: IsPrimitiveRoot.isRoot_cyclotomic
code: /-- Any `n`-th primitive root of unity is a root of `cyclotomic n R`. -/
theorem _root_.IsPrimitiveRoot.isRoot_cyclotomic (hpos : 0 < n) {μ : R} (h : IsPrimitiveRoot μ n) :
    IsRoot (cyclotomic n R) μ 
goal: (Polynomial.cyclotomic n R).IsRoot μ

full_name: _private.Mathlib.RingTheory.Polynomial.Cyclotomic.Roots.0.Polynomial.isRoot_cyclotomic_iff'
code: private theorem isRoot_cyclotomic_iff' {n : ℕ} {K : Type*} [Field K] {μ : K} [NeZero (n : K)] :
    IsRoot (cyclotomic n K) μ ↔ IsPrimitiveRoot μ n 
goal: (Polynomial.cyclotomic n K).IsRoot μ ↔ IsPrimitiveRoot μ n

full_name: Polynomial.isRoot_cyclotomic_iff
code: theorem isRoot_cyclotomic_iff [NeZero (n : R)] {μ : R} :
    IsRoot (cyclotomic n R) μ ↔ IsPrimitiveRoot μ n 
goal: (Polynomial.cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n

full_name: Polynomial.roots_cyclotomic_nodup
code: theorem roots_cyclotomic_nodup [NeZero (n : R)] : (cyclotomic n R).roots.Nodup 
goal: (Polynomial.cyclotomic n R).roots.Nodup

full_name: Polynomial.cyclotomic.roots_to_finset_eq_primitiveRoots
code: theorem cyclotomic.roots_to_finset_eq_primitiveRoots [NeZero (n : R)] :
    (⟨(cyclotomic n R).roots, roots_cyclotomic_nodup⟩ : Finset _) = primitiveRoots n R 
goal: { val := (Polynomial.cyclotomic n R).roots, nodup := ⋯ } = primitiveRoots n R

full_name: Polynomial.cyclotomic.roots_eq_primitiveRoots_val
code: theorem cyclotomic.roots_eq_primitiveRoots_val [NeZero (n : R)] :
    (cyclotomic n R).roots = (primitiveRoots n R).val 
goal: (Polynomial.cyclotomic n R).roots = (primitiveRoots n R).val

full_name: Polynomial.isRoot_cyclotomic_iff_charZero
code: /-- 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 isRoot_cyclotomic_iff_charZero {n : ℕ} {R : Type*} [CommRing R] [IsDomain R] [CharZero R]
    {μ : R} (hn : 0 < n) : (Polynomial.cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n 
goal: (Polynomial.cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n

full_name: Polynomial.cyclotomic_injective
code: /-- Over a ring `R` of characteristic zero, `fun n => cyclotomic n R` is injective. -/
theorem cyclotomic_injective [CharZero R] : Function.Injective fun n => cyclotomic n R 
goal: Function.Injective fun n => Polynomial.cyclotomic n R

full_name: IsPrimitiveRoot.minpoly_dvd_cyclotomic
code: /-- The minimal polynomial of a primitive `n`-th root of unity `μ` divides `cyclotomic n ℤ`. -/
theorem _root_.IsPrimitiveRoot.minpoly_dvd_cyclotomic {n : ℕ} {K : Type*} [Field K] {μ : K}
    (h : IsPrimitiveRoot μ n) (hpos : 0 < n) [CharZero K] : minpoly ℤ μ ∣ cyclotomic n ℤ 
goal: minpoly ℤ μ ∣ Polynomial.cyclotomic n ℤ

full_name: IsPrimitiveRoot.minpoly_eq_cyclotomic_of_irreducible
code: theorem _root_.IsPrimitiveRoot.minpoly_eq_cyclotomic_of_irreducible {K : Type*} [Field K]
    {R : Type*} [CommRing R] [IsDomain R] {μ : R} {n : ℕ} [Algebra K R] (hμ : IsPrimitiveRoot μ n)
    (h : Irreducible <| cyclotomic n K) [NeZero (n : K)] : cyclotomic n K = minpoly K μ 
goal: Polynomial.cyclotomic n K = minpoly K μ

full_name: Polynomial.cyclotomic_eq_minpoly
code: /-- `cyclotomic n ℤ` is the minimal polynomial of a primitive `n`-th root of unity `μ`. -/
theorem cyclotomic_eq_minpoly {n : ℕ} {K : Type*} [Field K] {μ : K} (h : IsPrimitiveRoot μ n)
    (hpos : 0 < n) [CharZero K] : cyclotomic n ℤ = minpoly ℤ μ 
goal: Polynomial.cyclotomic n ℤ = minpoly ℤ μ

full_name: Polynomial.cyclotomic_eq_minpoly_rat
code: /-- `cyclotomic n ℚ` is the minimal polynomial of a primitive `n`-th root of unity `μ`. -/
theorem cyclotomic_eq_minpoly_rat {n : ℕ} {K : Type*} [Field K] {μ : K} (h : IsPrimitiveRoot μ n)
    (hpos : 0 < n) [CharZero K] : cyclotomic n ℚ = minpoly ℚ μ 
goal: Polynomial.cyclotomic n ℚ = minpoly ℚ μ

full_name: Polynomial.cyclotomic.irreducible
code: /-- `cyclotomic n ℤ` is irreducible. -/
theorem cyclotomic.irreducible {n : ℕ} (hpos : 0 < n) : Irreducible (cyclotomic n ℤ) 
goal: Irreducible (Polynomial.cyclotomic n ℤ)

full_name: Polynomial.cyclotomic.irreducible_rat
code: /-- `cyclotomic n ℚ` is irreducible. -/
theorem cyclotomic.irreducible_rat {n : ℕ} (hpos : 0 < n) : Irreducible (cyclotomic n ℚ) 
goal: Irreducible (Polynomial.cyclotomic n ℚ)

full_name: Polynomial.cyclotomic.isCoprime_rat
code: /-- If `n ≠ m`, then `(cyclotomic n ℚ)` and `(cyclotomic m ℚ)` are coprime. -/
theorem cyclotomic.isCoprime_rat {n m : ℕ} (h : n ≠ m) :
    IsCoprime (cyclotomic n ℚ) (cyclotomic m ℚ) 
goal: IsCoprime (Polynomial.cyclotomic n ℚ) (Polynomial.cyclotomic m ℚ)