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

tactic: revert α
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ : E
α : ↥(solvableByRad F E)
⊢ IsSolvable (minpoly F α).Gal
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)), IsSolvable (minpoly F α).Gal

tactic: apply solvableByRad.induction
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)), IsSolvable (minpoly F α).Gal
state_after: case base
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : F), IsSolvable (minpoly F ((algebraMap F ↥(solvableByRad F E)) α)).Gal

case add
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α β : ↥(solvableByRad F E)),
    IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F β).Gal → IsSolvable (minpoly F (α + β)).Gal

case neg
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)), IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F (-α)).Gal

case mul
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α β : ↥(solvableByRad F E)),
    IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F β).Gal → IsSolvable (minpoly F (α * β)).Gal

case inv
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)), IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F α⁻¹).Gal

case rad
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)) (n : ℕ), n ≠ 0 → IsSolvable (minpoly F (α ^ n)).Gal → IsSolvable (minpoly F α).Gal

tactic: exact fun α => by rw [minpoly.eq_X_sub_C (solvableByRad F E)]; exact gal_X_sub_C_isSolvable α
state_before: case base
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : F), IsSolvable (minpoly F ((algebraMap F ↥(solvableByRad F E)) α)).Gal
state_after: no goals

tactic: rw [minpoly.eq_X_sub_C (solvableByRad F E)]
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ : E
α : F
⊢ IsSolvable (minpoly F ((algebraMap F ↥(solvableByRad F E)) α)).Gal
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ : E
α : F
⊢ IsSolvable (X - C α).Gal

tactic: exact gal_X_sub_C_isSolvable α
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α✝ : E
α : F
⊢ IsSolvable (X - C α).Gal
state_after: no goals

tactic: exact fun α β => induction2 (add_mem (subset_adjoin F _ (Set.mem_insert α _))
  (subset_adjoin F _ (Set.mem_insert_of_mem α (Set.mem_singleton β))))
state_before: case add
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α β : ↥(solvableByRad F E)),
    IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F β).Gal → IsSolvable (minpoly F (α + β)).Gal
state_after: no goals

tactic: exact fun α => induction1 (neg_mem (mem_adjoin_simple_self F α))
state_before: case neg
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)), IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F (-α)).Gal
state_after: no goals

tactic: exact fun α β => induction2 (mul_mem (subset_adjoin F _ (Set.mem_insert α _))
  (subset_adjoin F _ (Set.mem_insert_of_mem α (Set.mem_singleton β))))
state_before: case mul
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α β : ↥(solvableByRad F E)),
    IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F β).Gal → IsSolvable (minpoly F (α * β)).Gal
state_after: no goals

tactic: exact fun α => induction1 (inv_mem (mem_adjoin_simple_self F α))
state_before: case inv
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)), IsSolvable (minpoly F α).Gal → IsSolvable (minpoly F α⁻¹).Gal
state_after: no goals

tactic: exact fun α n => induction3
state_before: case rad
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
⊢ ∀ (α : ↥(solvableByRad F E)) (n : ℕ), n ≠ 0 → IsSolvable (minpoly F (α ^ n)).Gal → IsSolvable (minpoly F α).Gal
state_after: no goals