Theorem: exists_root_adjoin_eq_top_of_isCyclic
File: Mathlib/FieldTheory/KummerExtension.lean

Proof steps:
state_before: K : Type u
inst✝⁵ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : ζ ∈ primitiveRoots (finrank K L) K
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: have ⟨ζ, hζ⟩ := hK
state_before: K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : ζ ∈ primitiveRoots (finrank K L) K
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: rw [mem_primitiveRoots finrank_pos] at hζ
state_before: K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: case mk.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: obtain ⟨σ, hσ⟩ := ‹IsCyclic (L ≃ₐ[K] L)›
state_before: case mk.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: case mk.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: have hσ' := orderOf_eq_card_of_forall_mem_zpowers hσ
state_before: case mk.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: case mk.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: have : IsRoot (minpoly K σ.toLinearMap) ζ := by
    simpa [minpoly_algEquiv_toLinearMap σ (isOfFinOrder_of_finite σ), hσ',
      sub_eq_zero, IsGalois.card_aut_eq_finrank] using hζ.pow_eq_one
state_before: case mk.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: case mk.intro.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: obtain ⟨v, hv⟩ := (Module.End.hasEigenvalue_of_isRoot this).exists_hasEigenvector
state_before: case mk.intro.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: case mk.intro.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
hv' : ∀ (n : ℕ), (σ.toLinearMap ^ n) v = ζ ^ n • v
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: have hv' := hv.pow_apply
state_before: case mk.intro.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
hv' : ∀ (n : ℕ), (σ.toLinearMap ^ n) v = ζ ^ n • v
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: case mk.intro.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
hv' : ∀ (n : ℕ), (σ ^ n) v = ζ ^ n • v
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
tactic: simp_rw [← AlgEquiv.pow_toLinearMap, AlgEquiv.toLinearMap_apply] at hv'
state_before: case mk.intro.intro
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
hv' : ∀ (n : ℕ), (σ ^ n) v = ζ ^ n • v
⊢ ∃ α, α ^ finrank K L ∈ Set.range ⇑(algebraMap K L) ∧ K⟮α⟯ = ⊤
state_after: case mk.intro.intro.refine_1
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
hv' : ∀ (n : ℕ), (σ ^ n) v = ζ ^ n • v
⊢ v ^ finrank K L ∈ Set.range ⇑(algebraMap K L)

case mk.intro.intro.refine_2
K : Type u
inst✝⁵ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝⁴ : Field L
inst✝³ : Algebra K L
inst✝² : IsGalois K L
inst✝¹ : FiniteDimensional K L
inst✝ : IsCyclic (L ≃ₐ[K] L)
hK : (primitiveRoots (finrank K L) K).Nonempty
ζ : K
hζ : IsPrimitiveRoot ζ (finrank K L)
σ : L ≃ₐ[K] L
hσ : ∀ (x : L ≃ₐ[K] L), x ∈ Subgroup.zpowers σ
hσ' : orderOf σ = Fintype.card (L ≃ₐ[K] L)
this : (minpoly K σ.toLinearMap).IsRoot ζ
v : L
hv : Module.End.HasEigenvector σ.toLinearMap ζ v
hv' : ∀ (n : ℕ), (σ ^ n) v = ζ ^ n • v
⊢ K⟮v⟯ = ⊤
tactic: refine ⟨v, ?_, ?_⟩