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

tactic: exact this ▸ minpoly.irreducible (IsIntegral.of_finite K α)
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⟮α⟯ = ⊤
this : X ^ finrank K L - C a = minpoly K α
⊢ Irreducible (X ^ finrank K L - C a)
state_after: no goals

tactic: refine minpoly.unique _ _ (monic_X_pow_sub_C _ finrank_pos.ne.symm) ?_ ?_
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⟮α⟯ = ⊤
⊢ X ^ finrank K L - C a = minpoly K α
state_after: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ (aeval α) (X ^ finrank K L - C a) = 0

case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ ∀ (q : K[X]), q.Monic → (aeval α) q = 0 → (X ^ finrank K L - C a).degree ≤ q.degree

tactic: simp only [aeval_def, eval₂_sub, eval₂_X_pow, ha, eval₂_C, sub_self]
state_before: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ (aeval α) (X ^ finrank K L - C a) = 0
state_after: no goals

tactic: intros q hq hq'
state_before: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
⊢ ∀ (q : K[X]), q.Monic → (aeval α) q = 0 → (X ^ finrank K L - C a).degree ≤ q.degree
state_after: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
q : K[X]
hq : q.Monic
hq' : (aeval α) q = 0
⊢ (X ^ finrank K L - C a).degree ≤ q.degree

tactic: refine le_trans ?_ (degree_le_of_dvd (minpoly.dvd _ _ hq') hq.ne_zero)
state_before: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
q : K[X]
hq : q.Monic
hq' : (aeval α) q = 0
⊢ (X ^ finrank K L - C a).degree ≤ q.degree
state_after: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
q : K[X]
hq : q.Monic
hq' : (aeval α) q = 0
⊢ (X ^ finrank K L - C a).degree ≤ (minpoly K α).degree

tactic: rw [degree_X_pow_sub_C finrank_pos,
  degree_eq_natDegree (minpoly.ne_zero (IsIntegral.of_finite K α)),
  ← IntermediateField.adjoin.finrank (IsIntegral.of_finite K α), hα, Nat.cast_le]
state_before: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
q : K[X]
hq : q.Monic
hq' : (aeval α) q = 0
⊢ (X ^ finrank K L - C a).degree ≤ (minpoly K α).degree
state_after: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
q : K[X]
hq : q.Monic
hq' : (aeval α) q = 0
⊢ finrank K L ≤ finrank K ↥⊤

tactic: exact (finrank_top K L).ge
state_before: case 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
a : K
α : L
ha : α ^ finrank K L = (algebraMap K L) a
hα : K⟮α⟯ = ⊤
q : K[X]
hq : q.Monic
hq' : (aeval α) q = 0
⊢ finrank K L ≤ finrank K ↥⊤
state_after: no goals