Theorem: solvableByRad.isSolvable'
File: Mathlib/FieldTheory/AbelRuffini.lean

tactic: have : _root_.IsSolvable (q * C q.leadingCoeff⁻¹).Gal := by
  rw [minpoly.eq_of_irreducible q_irred q_aeval, ←
    show minpoly F (⟨α, hα⟩ : solvableByRad F E) = minpoly F α from
      (minpoly.algebraMap_eq (RingHom.injective _) _).symm]
  exact isSolvable ⟨α, hα⟩
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
⊢ IsSolvable q.Gal
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
this : IsSolvable (q * C q.leadingCoeff⁻¹).Gal
⊢ IsSolvable q.Gal

tactic: refine solvable_of_surjective (Gal.restrictDvd_surjective ⟨C q.leadingCoeff⁻¹, rfl⟩ ?_)
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
this : IsSolvable (q * C q.leadingCoeff⁻¹).Gal
⊢ IsSolvable q.Gal
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
this : IsSolvable (q * C q.leadingCoeff⁻¹).Gal
⊢ q * C q.leadingCoeff⁻¹ ≠ 0

tactic: rw [mul_ne_zero_iff, Ne, Ne, C_eq_zero, inv_eq_zero]
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
this : IsSolvable (q * C q.leadingCoeff⁻¹).Gal
⊢ q * C q.leadingCoeff⁻¹ ≠ 0
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
this : IsSolvable (q * C q.leadingCoeff⁻¹).Gal
⊢ ¬q = 0 ∧ ¬q.leadingCoeff = 0

tactic: exact ⟨q_irred.ne_zero, leadingCoeff_ne_zero.mpr q_irred.ne_zero⟩
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
this : IsSolvable (q * C q.leadingCoeff⁻¹).Gal
⊢ ¬q = 0 ∧ ¬q.leadingCoeff = 0
state_after: no goals

tactic: rw [minpoly.eq_of_irreducible q_irred q_aeval, ←
  show minpoly F (⟨α, hα⟩ : solvableByRad F E) = minpoly F α from
    (minpoly.algebraMap_eq (RingHom.injective _) _).symm]
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
⊢ IsSolvable (q * C q.leadingCoeff⁻¹).Gal
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
⊢ IsSolvable (minpoly F ⟨α, hα⟩).Gal

tactic: exact isSolvable ⟨α, hα⟩
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ α : E
q : F[X]
q_irred : Irreducible q
q_aeval : (aeval α) q = 0
hα : IsSolvableByRad F α
⊢ IsSolvable (minpoly F ⟨α, hα⟩).Gal
state_after: no goals