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

tactic: constructor
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ IsSplittingField K L (X ^ finrank K L - C a)
state_after: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Splits (algebraMap K L) (X ^ finrank K L - C a)

case adjoin_rootSet'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Algebra.adjoin K ((X ^ finrank K L - C a).rootSet L) = ⊤

tactic: rw [← splits_id_iff_splits, Polynomial.map_sub, Polynomial.map_pow, Polynomial.map_C,
  Polynomial.map_X]
state_before: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Splits (algebraMap K L) (X ^ finrank K L - C a)
state_after: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Splits (RingHom.id L) (X ^ finrank K L - C ((algebraMap K L) a))

tactic: have ⟨_, hζ⟩ := hK
state_before: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Splits (RingHom.id L) (X ^ finrank K L - C ((algebraMap K L) a))
state_after: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
w✝ : K
hζ : w✝ ∈ primitiveRoots (finrank K L) K
⊢ Splits (RingHom.id L) (X ^ finrank K L - C ((algebraMap K L) a))

tactic: rw [mem_primitiveRoots finrank_pos] at hζ
state_before: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
w✝ : K
hζ : w✝ ∈ primitiveRoots (finrank K L) K
⊢ Splits (RingHom.id L) (X ^ finrank K L - C ((algebraMap K L) a))
state_after: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
w✝ : K
hζ : IsPrimitiveRoot w✝ (finrank K L)
⊢ Splits (RingHom.id L) (X ^ finrank K L - C ((algebraMap K L) a))

tactic: exact X_pow_sub_C_splits_of_isPrimitiveRoot (hζ.map_of_injective (algebraMap K _).injective) ha
state_before: case splits'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
w✝ : K
hζ : IsPrimitiveRoot w✝ (finrank K L)
⊢ Splits (RingHom.id L) (X ^ finrank K L - C ((algebraMap K L) a))
state_after: no goals

tactic: rw [eq_top_iff, ← IntermediateField.top_toSubalgebra, ← hα,
  IntermediateField.adjoin_simple_toSubalgebra_of_integral (IsIntegral.of_finite K α)]
state_before: case adjoin_rootSet'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Algebra.adjoin K ((X ^ finrank K L - C a).rootSet L) = ⊤
state_after: case adjoin_rootSet'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Algebra.adjoin K {α} ≤ Algebra.adjoin K ((X ^ finrank K L - C a).rootSet L)

tactic: apply Algebra.adjoin_mono
state_before: case adjoin_rootSet'
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ Algebra.adjoin K {α} ≤ Algebra.adjoin K ((X ^ finrank K L - C a).rootSet L)
state_after: case adjoin_rootSet'.H
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ {α} ⊆ (X ^ finrank K L - C a).rootSet L

tactic: rw [Set.singleton_subset_iff, mem_rootSet_of_ne (X_pow_sub_C_ne_zero finrank_pos a),
  aeval_def, eval₂_sub, eval₂_X_pow, eval₂_C, ha, sub_self]
state_before: case adjoin_rootSet'.H
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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ {α} ⊆ (X ^ finrank K L - C a).rootSet L
state_after: no goals