Theorem: gal_X_pow_sub_C_isSolvable
File: Mathlib/FieldTheory/AbelRuffini.lean

tactic: by_cases hx : x = 0
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
⊢ IsSolvable (X ^ n - C x).Gal
state_after: case pos
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : x = 0
⊢ IsSolvable (X ^ n - C x).Gal

case neg
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (X ^ n - C x).Gal

tactic: apply gal_isSolvable_tower (X ^ n - 1) (X ^ n - C x)
state_before: case neg
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (X ^ n - C x).Gal
state_after: case neg.hpq
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ Splits (algebraMap F (X ^ n - C x).SplittingField) (X ^ n - 1)

case neg.hp
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (X ^ n - 1).Gal

case neg.hq
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (Polynomial.map (algebraMap F (X ^ n - 1).SplittingField) (X ^ n - C x)).Gal

tactic: rw [hx, C_0, sub_zero]
state_before: case pos
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : x = 0
⊢ IsSolvable (X ^ n - C x).Gal
state_after: case pos
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : x = 0
⊢ IsSolvable (X ^ n).Gal

tactic: exact gal_X_pow_isSolvable n
state_before: case pos
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : x = 0
⊢ IsSolvable (X ^ n).Gal
state_after: no goals

tactic: exact splits_X_pow_sub_one_of_X_pow_sub_C _ n hx (SplittingField.splits _)
state_before: case neg.hpq
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ Splits (algebraMap F (X ^ n - C x).SplittingField) (X ^ n - 1)
state_after: no goals

tactic: exact gal_X_pow_sub_one_isSolvable n
state_before: case neg.hp
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (X ^ n - 1).Gal
state_after: no goals

tactic: rw [Polynomial.map_sub, Polynomial.map_pow, map_X, map_C]
state_before: case neg.hq
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (Polynomial.map (algebraMap F (X ^ n - 1).SplittingField) (X ^ n - C x)).Gal
state_after: case neg.hq
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (X ^ n - C ((algebraMap F (X ^ n - 1).SplittingField) x)).Gal

tactic: apply gal_X_pow_sub_C_isSolvable_aux
state_before: case neg.hq
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ IsSolvable (X ^ n - C ((algebraMap F (X ^ n - 1).SplittingField) x)).Gal
state_after: case neg.hq.h
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ Splits (RingHom.id (X ^ n - 1).SplittingField) (X ^ n - 1)

tactic: have key := SplittingField.splits (X ^ n - 1 : F[X])
state_before: case neg.hq.h
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
⊢ Splits (RingHom.id (X ^ n - 1).SplittingField) (X ^ n - 1)
state_after: case neg.hq.h
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
key : Splits (algebraMap F (X ^ n - 1).SplittingField) (X ^ n - 1)
⊢ Splits (RingHom.id (X ^ n - 1).SplittingField) (X ^ n - 1)

tactic: rwa [← splits_id_iff_splits, Polynomial.map_sub, Polynomial.map_pow, map_X,
  Polynomial.map_one] at key
state_before: case neg.hq.h
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
n : ℕ
x : F
hx : ¬x = 0
key : Splits (algebraMap F (X ^ n - 1).SplittingField) (X ^ n - 1)
⊢ Splits (RingHom.id (X ^ n - 1).SplittingField) (X ^ n - 1)
state_after: no goals